题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路:
先考虑最简单情况就是只有一级台阶,仅有一种跳法。两级台阶,有两种跳法(1+1和2)。三级台阶,有四种跳法(1+1+1,2+1,1+2,3)……
用表格来展示可以方便大家观看:
台阶数 | 跳法 | 数量 |
1 | 1 | 1 |
2 | 1+1,2 | 2 |
3 | 1+1+1,2+1,1+2,3 | 4 |
... | ... | ... |
n | 2^(n - 1) |
根据表格可以总结为f(n) = 2*f(n -1),是一个非常明显的递归公式,同样,为了效率问题,可以采用循环方式解决
代码实现
(C实现):
int jumpFloorII(int number ) { // write code here int res = 1; if (number <= 0) return 0; if (number == 1) return 1; for (int i = 2; i <= number; i++) { res = res * 2; } //res = jumpFloorII(number - 1) * 2 递归代码 return res; }
(JavaScript实现):
function jumpFloorII(number) { // write code here var res = 1; if (number <= 0) { return 0; } if (number == 1) { return res; } for (var i = 2; i <= number; i++) { res = res * 2; } // res = jumpFloorII(number - 1) * 2; 递归代码 return res; }
原文:https://www.cnblogs.com/zhangshiliu/p/14659864.html