什么是fibnacci数列?
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
fibnacci数列的递归/迭代表达式
一开始想到的是这个,仔细一想发现它不是递归而是迭代;递归表达式应该就是F(n)=F(n-1)+F(n-2)
C语言递归/迭代实现Fib(n)
因为一开始想到的是迭代,就先用迭代实现的,截图如下
然后用递归实现截图如下:
有趣的是:
1.当我让尝试fib(100)时即便用unsigned long long数据大小也不够了
2.但迭代算法时fib(10)、fib(100)都是秒出结果,而递归fib(10)时还好,fib(100)时就卡住不动了,说明尽管递归方法直观和简洁,但在处理大数项时可能会导致性能问题,因为递归需要多次重复计算相同的子问题。在这种情况下,迭代方法通常更高效。
用GDB查看递归的堆栈情况
在gdb的过程中,我进一步理解了递归在处理大数项时可能会导致的性能问题。(真的是疯狂按continue)
标签:数列,递归,fibnacci,fib,100,迭代 From: https://www.cnblogs.com/zzz12138/p/17804221.html