斐波那契数指 1 1 2 3  5 8  13  21....前两个数是1 1,从第3个数开始该数等于前两个数之和。

1.用递归的方法求第n个斐波那契数

求第n个斐波那契数

但我们发现有问题,当就算第45个斐波那契数时,特别耗费时间,许久没有结果。这是为什么呢?

求第n个斐波那契数

我们发现fib函数在调用过程中有很多重复的计算,如当计算fib(35)时需要多次计算fib(3),导致时间缓慢。

但是用迭代的方法便不存在上述问题

求第n个斐波那契数

总结:许多问题是用递归的方式进行解释,是因为它比非递归的形式更加清晰;

上述问题用迭代实现比递归实现效率更高,但代码可读性稍差;

当一个问题相当复杂,难以用迭代实现时,此时递归实现的简洁性便可补偿它所带来的运行是开销。


相关文章: