13. 斐波那契数列

从键盘接收一个正整数 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]

猜你喜欢

转载自blog.csdn.net/YYHEZB/article/details/81321780