斐波那契数列的两种实现
来源:互联网 发布:访问远程oracle数据库 编辑:程序博客网 时间:2024/06/04 19:25
一、递归法
unsigned long long Fibonacci(unsigned int n){if(n==0||n==1)return n;return Fibonacci(n-2)+Fibonacci(n-1);}用递归法实现斐波那契数列代码实现比较简洁,但在n比较大时会引起栈溢出,无法实现所需功能。我用自己电脑测试一下,只能求出Fibonacci(44),具体能求到多少与个人计算机配置有关,在这不过多说明。
二、非递归法
unsigned long long Fibonacci(unsigned int n){if(n==0||n==1)return n;unsigned long long arr[3]={0,1};//为节省空间,此处用长度为3的数组,无用数据直接覆盖int j=0;int flag;for(unsigned int i=2;i<=n;++i){flag=(j+2)%3;arr[flag]=arr[j]+arr[(j+1)%3];j=(j+1)%3;}return arr[flag];}
此方法弥补了递归法会出现栈溢出的弊端,在返回值是unsigned long long时,在32位系统上最多能求出Fibonacci(119),Fibonacci(120)超出此数据类型范围。当n较大时建议使用非递归法。
阅读全文
1 0
- 斐波那契数列的两种实现方式
- 斐波那契数列的两种实现形式
- 斐波那契数列的两种实现方法
- 斐波那契数列的两种实现方法
- 斐波那契数列的两种简单实现
- 斐波那契数列的两种实现
- 斐波那契数列的两种实现呢
- java实现斐波那契数列两种写法
- 斐波那契数列实现的两种实现(表查询、向量)
- “斐波那契数列”的两种算法
- “斐波那契数列”的两种算法
- 斐波那契数列的两种表达方式
- “斐波那契数列”的两种算法
- C语言实现斐波那契数列的两种方法(递归和迭代)
- 斐波那契数列的实现
- 斐波那契数列的实现
- 斐波那契数列的实现
- 斐波那契数列数列的实现
- LBG矢量量化算法
- 数组——找最大值
- d3 绘制中国地图城市及城市间的连线
- 【代码片-1】 Project Perfect让Swift在服务器端跑起来-引言(一)
- XML与JSON解析
- 斐波那契数列的两种实现
- 网易Emmagee简单改造
- Java EE编程技术学习笔记(4)-JDBC
- RxJava倒计时
- Large Division LightOJ
- POJ 3670
- HDU 2054 A==B?
- Linux--进程控制
- 代码片-1】 Servlet学习(一)----Servlet的生命周期以及开发Servlet的三种方法