9. 斐波那契数列
2015-08-20 16:31
387 查看
题目描述
写一个函数,输入n,求斐波那契数列(Fibonacci)数列的第n项,斐波那契数列的定义为:解析
方法一:用递归的方法来求斐波那契数列方法二:用循环来求斐波那契数列,用简单的方法从下往上计算,先计算根据f(0)、f(1)计算出f(2),在根据f(1)、f(2)计算出f(3)……依次计算到f(n)。时间复杂度为O(n)。
实现
//斐波那契数列递归方法 long long Fibonacci_Solution1(unsigned int n){ if(n<=0) return 0; if(n==1) return 1; return Fibonacci_Solution1(n-1)+Fibonacci_Solution1(n-2); } //斐波那契数列循环方法 long long Fibonacci_Solution2(unsigned n){ if(n<=0) return 0; if(n==1) return 1; long long FibN; long long one = 0; long long two = 1; for(unsigned int i=2; i<=n; i++){ FibN = one + two; one = two; two = FibN; } return FibN; }
青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思考:当n>2时,第一次跳的时候有两种选择,一是第一次跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2);因此n级台阶的跳法总数为f(n-1)+f(n-2)。即为斐波那契数列。
青蛙变态跳法
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思考同上!
矩形覆盖问题
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?相关文章推荐
- 虚拟化--002 VMware vSphere 创建虚拟机时SCSI适配器的选择
- 神经网络编程入门
- 暑假-动态规划 III-I - Function Run Fun
- DOM(一)-18-(节点操作-删除节点)
- linux调试工具
- JVM查看命令
- 二叉树的链式存储
- (14)[Xamarin.Android] 异步的网络图片下载
- ios delegate 使用注意 assign,weak
- HA之heartbeat3.0.6安装配置
- static作用整理
- 分数加减法
- 函数作用域和声明提前
- 虚拟化--001 esxi新建vm 3种数据存储磁盘格式
- Web开发之PHP框架(一)-Laravel环境搭建
- 关于cocos2dx编写的游戏由vs2013项目打包成apk文件
- UNIX Tutorial Two_files
- Vim编辑器——入门学习
- 重建二叉树
- 虚函数与虚继承寻踪