一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個(gè)n級的臺階總共有多少種跳法。
public int JumpFloor(int target) {
if(target == 1 || target == 2) {
return target;
}
// 第一階和第二階考慮過了,初始當(dāng)前臺階為第三階,向后迭代
// 思路:當(dāng)前臺階的跳法總數(shù)=當(dāng)前臺階后退一階的臺階的跳法總數(shù)+當(dāng)前臺階后退二階的臺階的跳法總數(shù)
int jumpSum = 0;// 當(dāng)前臺階的跳法總數(shù)
int jumpSumBackStep1 = 2;// 當(dāng)前臺階后退一階的臺階的跳法總數(shù)(初始值當(dāng)前臺階是第3階)
int jumpSumBackStep2 = 1;// 當(dāng)前臺階后退二階的臺階的跳法總數(shù)(初始值當(dāng)前臺階是第3階)
for(int i = 3; i <= target; i++) {
jumpSum= jumpSumBackStep1 + jumpSumBackStep2;
jumpSumBackStep2 = jumpSumBackStep1;// 后退一階在下一次迭代變?yōu)楹笸藘呻A
jumpSumBackStep1 = jumpSum; // 當(dāng)前臺階在下一次迭代變?yōu)楹笸艘浑A
}
return jumpSum;
}