一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
public int JumpFloor(int target) {
if(target == 1 || target == 2) {
return target;
}
// 第一階和第二階考慮過了,初始當前臺階爲第三階,向後迭代
// 思路:當前臺階的跳法總數=當前臺階後退一階的臺階的跳法總數+當前臺階後退二階的臺階的跳法總數
int jumpSum = 0;// 當前臺階的跳法總數
int jumpSumBackStep1 = 2;// 當前臺階後退一階的臺階的跳法總數(初始值當前臺階是第3階)
int jumpSumBackStep2 = 1;// 當前臺階後退二階的臺階的跳法總數(初始值當前臺階是第3階)
for(int i = 3; i <= target; i++) {
jumpSum= jumpSumBackStep1 + jumpSumBackStep2;
jumpSumBackStep2 = jumpSumBackStep1;// 後退一階在下一次迭代變爲後退兩階
jumpSumBackStep1 = jumpSum; // 當前臺階在下一次迭代變爲後退一階
}
return jumpSum;
}