青蛙跳台阶

来源:互联网 发布:软件打包有哪些 编辑:程序博客网 时间:2024/04/29 23:47

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?

因为一次只能跳一个或两个台阶。所以,

n <= 0,无法跳,f(n) = 0;

n = 1,只能跳一个台阶。f(1) = 1;

n = 2, 两次跳一个台阶,或一次跳两个台阶。f(2) = 2; 

n = 3, 只能从第2个台阶或第一个台阶跳上来。判断f(2)和f(1)即可获得f(3)。f(3) = f(2)+f(1);

n = ...,对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来.F(n) = F(n-1) + F(n-2) (斐波拉契数序列)

综上:此题可用两种解法:

1,使用递归;

2,使用迭代。


1,递归方法:

优点:代码简洁明了,易于理解。

缺点:系统开销稍大,效率较低,不建议使用。

int jumpFloor(int number) {if (0 >= number)return 0;if ((1 == number) || (2 == number))return number;return (jumpFloor(number-1) + jumpFloor(number-2));}


2,使用迭代方法:

优点:运行效率高。

int jumpFloor(int number){int j1 = 1;int j2 = 2;int sum = 0;if (number <= 0)return 0;if ((1 == number) || (2 == number))return number;while (3 <= number){sum = j1 + j2;j1 = j2;j2 = sum;number--;}return sum;}



2 0
原创粉丝点击