題目描述:spa
一隻青蛙一次能夠跳上1級臺階,也能夠跳上2級……它也能夠跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。code
解題思路:blog
先考慮最簡單狀況就是隻有一級臺階,僅有一種跳法。兩級臺階,有兩種跳法(1+1和2)。三級臺階,有四種跳法(1+1+1,2+1,1+2,3)……遞歸
用表格來展現能夠方便你們觀看:ip
臺階數 | 跳法 | 數量 |
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),是一個很是明顯的遞歸公式,一樣,爲了效率問題,能夠採用循環方式解決it
代碼實現io
(C實現):table
int jumpFloorII(int number ) { // write code here int res = 1; if (number <= 0 || number == 1) return number;
for (int i = 2; i <= number; i++) { res = res * 2; } //res = jumpFloorII(number - 1) * 2 遞歸代碼 return res; }
(JavaScript實現):function
function jumpFloorII(number) { // write code here var res = 1; if (number <= 0 || number == 1) { return number; }
for (var i = 2; i <= number; i++) { res = res * 2; } //res = jumpFloorII(number - 1) * 2; 遞歸代碼 return res; }