首页 > 其他分享 > fibnacci数列递归/迭代实现

fibnacci数列递归/迭代实现

时间:2023-11-01 21:55:43浏览次数:32  
标签:数列 递归 fibnacci fib 100 迭代

什么是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

相关文章

  • 斐波那契数列
    1.什么是斐波那契数列斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……2.递归表达式F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)。......
  • Linux中中括号{}应用与for循环的可迭代对象
     001、[root@pc1test]#foriinab8ab23ab98;doecho$i;done##直接迭代ab8ab23ab98[root@pc1test]#foriinab{8,23,98};doecho$i;done##可以写成如下形式ab8ab23ab98[root@pc1test]#foriinab{8,23yt,98};doecho$i;done......
  • 即构发布 | 移动端实时超分辨率技术,迭代视觉新体验
     超分辨率(SuperResolution,简称SR),是计算机视觉的一个经典应用。SR是指通过软件或硬件的方法,从观测到的低分辨率图像重建出相应的高分辨率图像,简单来说就是通过AI算法来放大原有图像的分辨率以达到提升画质的效果。在监控设备、卫星图像遥感、数字高清、显微成像、视频编码通......
  • python和迭代器区别
    Python列表:它们是否为迭代器 文章目录列表是可迭代对象列表不是迭代器列表与迭代器的区别总结Python列表:它们是否为迭代器在本文中,我们将介绍Python列表和迭代器之间的关系。Python列表是一种常用的数据结构,用于存储多个元素。而迭代器是一种访问集合元素的对象......
  • 灵性·挖掘 3:自我迭代之路
    灵性·挖掘3:自我迭代之路你的观众只有一个,就是你自己不谈感受,只谈行动式感受熬竞争对手用力过猛会反杀自己。进入这种状态是无我的状态。 你的观众只有一个,就是你自己我活着到底是为了干啥呢?我吃喝玩乐好像也没那么有意思,那是为了干啥呢?买辆买辆车,买辆买个套房子也就那样,也不会......
  • 灵性·挖掘 4:自我迭代之路
    灵性·挖掘4:自我迭代之路升级产业链生态位技术、管理、双百 升级产业链生态位小白做生意,都是在货的角度做生意。如果你的生意只有一个维度,就是你的产品。除非质量特别牛逼,品牌特别大,然后成为在中国前三名的A级品牌。卖高价。就就很多人会来买,然后你就赚他一次的钱,但是因为你......
  • 灵性·挖掘 2:自我迭代之路
    灵性·挖掘2:自我迭代之路所有事情发生,本质就是来教你成长的;所有伤害你的人存在,就是来帮你长大的你到底那个事儿是大事儿还是小事儿?是让你痛苦还是不痛苦?关键在于你的认知,你的经历。打得有多开人活着不是只活自己的。我没有资格抑郁、难受。绝路就等于出路。痛苦就等于智慧。挫折......
  • 08迭代器源码分析
    Iterator一、源码分析size:集合的长度。cursor:光标,表示迭代器的指针,默认指向0索引位置二、modCount作用modCount++;是集合变化的次数(删除或者添加)。expectedModCount创建的迭代器的时候会把集合变化的次数传递给这个变量。(相当于迭代器对次数自己做了一次记录)c......
  • python循环迭代
    学习目标掌握for与while循环掌握continue,break,pass的区别核心知识循环中有3种常见的方式顺序:从上向下,顺序执行代码(从上往下执行)分支:根据条件判断,决定执行代码的分支(if/else)循环:让特定代码重复执行(for/while)for循环for可循环遍历的对象有字符串,列表,字典,集合,元组#......
  • 38.外观数列(中等)
    目录题目法一、双指针法二、递归题目给定一个正整数n,输出外观数列的第n项。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1)="1"countAndSay(n)是对countAndSay(n-1)......