从键盘接收一个正整数 n, 输出对应斐波那契 (Fibonacci ) 数列的前 n 项(计算数列中某项的值请用递归函数实现) 。另外,请指出所用算法的复杂度。
一、思路:
斐波那契数列即:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
输入的时候,应该考虑为0的情况;
二、代码:
1. O(n*2 ^n)
def fib(n):
if n == 0 or n == 1:
return n
else:
return fib(n-1) + fib(n-2)
n = int(input('n = '))
for i in range(n+1):
print(fib(i), end=' ')
2. O(n)
def fib(n, List):
a, b = 0, 1
List.append(a)
while b <= n:
List.append(b)
a, b = b, a+b
n = int(input('n = '))
L1 = []
fib(n, L1)
print(L1)
三、输出:
n = 3
0 1 1 2
n = 3
[0, 1, 1, 2, 3]