Fibonacci数列
Fibonacci数列是指这样一种数列,它的前两项均为1,从第三项开始各项均为前两项之和。
公式:
1 (n=1,2)
fib(n)=
fib(n-1)+fib(n-2) (n>2)
两种方式实现
1 递归
--递归
local function Fibonacci_1(n)
if n == 1 or n == 2 then
return 1
else
return Fibonacci_1(n - 1) + Fibonacci_1(n - 2)
end
end
2 迭代
--迭代
local function Fibonacci_2(n)
local f0, f1 = 1, 1
local curFib = nil
if n < 2 then
curFib = f0 + f1
else
for i = 1, n - 2 do
curFib = f0 + f1
f0 = f1
f1 = curFib
end
end
return curFib
end
相对而言,时间复杂度:O(迭代) <O(递归)
注意:n值过大可能导致lua解释器奔溃~