最近在刷《劍指offer》裡的程式設計題,但是網上關于《劍指offer》的解答多半是C或者C++的,而且官方(作者)也是在用C++進行講解,這裡自己用java寫了一些題目的解答代碼(當然也有部分是借鑒了網上别人的解答的,出處未注明敬請之處請指出,侵删),希望能對大家的學習有所幫助。
上一篇文章講了跳台階問題:一隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上一個n級的台階總共有多少種跳法。(http://blog.csdn.net/qq_15062527/article/details/48846627)
這個其實就是一個斐波那契數列問題,現在我們把這個問題提升一下難度:
一隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的台階總共有多少種跳法。
牛客網題目架構截圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DMxADO1IzM2ETMwATM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
解答:
public class Solution {
public int JumpFloorII(int target) {
int m=0,i;
if(target<0)m=0;
else if(target==0)m=1;
else
for(i=target-1;i>=0;i--)
m+=JumpFloorII(i);
return m;
}
}
牛客網編譯通過截圖: