Fibonacci数列的递归和非递归
2016-04-10 12:54
134 查看
Fibonacci数列是这样的:
1,1,2,3,5,8,13,21,34。。。
就是前两个数相加等于后一个。
采用递归的方法实现是这样的:
算法具有指数级的计算时间。
非递归方法:
算法时间复杂度O(n)。
1,1,2,3,5,8,13,21,34。。。
就是前两个数相加等于后一个。
采用递归的方法实现是这样的:
int Fibonacci(int n) { if (n == 0 || n == 1) return 1; else return Fibonacci(n - 1) + Fibonacci(n - 2); }
算法具有指数级的计算时间。
非递归方法:
int Fibonacci2(int n) { int fib1=1, fib2=1, fib3; if (n==0||n==1) { return 1; } else { for (int i = 2; i <= n; i++) { fib3 = fib1 + fib2; fib1 = fib2; fib2 = fib3; } return fib3; } }
算法时间复杂度O(n)。
相关文章推荐
- 【Android】找不到类
- android Fragment的切换(解决replace的低效)
- 窗口句柄HWND和实例句柄HINSTANCE
- caffe+ubuntu14.04
- ZOJ3781
- 第一个只出现一次的字符位置
- 64位系统下sizeof()小结
- 孙敬哲的C++上机实验3-2
- asp.net MVC 和 webForm的区别
- jQuery UI的一些基本用法
- JAVA程序性能优化
- WebApp中的页面生命周期及路由管理
- 学习java第二周
- Aspnetpager对GridView分页并顺利导出Excel
- Mac 10.11 android6.0源码编译
- 编程珠玑_磁盘中无重复大量整数数据排序限制内存借助位图
- nyoj737 石子合并 区间dp
- CentOS运行C++程序出现内存错误-munmap_chunk():invalid pointer
- 正则表达式基本语法
- getLeft,getTop,getRight,getBottm区别