斐波那契数列python3的递归(不推荐)与非递归实现(重要)

1.斐波那契问题最简单的是递归实现,python3默认最大递归深度为998,可以通过sys.setrecursionlimit(设置的次数)来设置最大递归深度,但是递归效率太低,所以不推荐,仅供了解

def feibonacci(n):
    if n <=2:
        return 1
    else:
        return feibonacci(n-1) + feibonacci(n-2)
print(feibonacci(6))
2.斐波那契数列非递归实现推荐
def feibonacci(n):
    if n <= 2:
        return 1
    else:
        last, last_last = 1, 1
        for i in range(n-2):
            last, last_last = last_last, last + last_last

        return last_last
print(feibonacci(6))

解释下为什么不推荐递归写法.我们看下斐波那契第30个数用递归与非递归写法所用时间就可以知道了

#递归所用时间
Fibonacci 运行了 22.740990832040
#非递归所有时间
Fibonacci 运行了 0.000000832040

你可能感兴趣的:(python)