跳臺階和變態跳臺階
阿新 • • 發佈:2019-05-06
n) else if tar 每次 turn public sum == ret
這兩道題比較類似,就放到一塊來了
這兩道題的解題思路我是用的一樣的,都是遞歸求解
當每次只能跳1或2臺階時候,f(n) = f(n-2) + f(n-1),f(1) = 1,f(2) = 2
而當每次可跳1或2或3一直到n臺階時,f(n) = f(n-1) + f(n-2) + ... + 1,同樣 f(1) = 1,f(2) =2
下面貼兩道題的代碼
跳臺階:
public class Solution { public int JumpFloor(int target) { if(target == 1 || target == 2){ return target; }else if(target > 2){ return JumpFloor(target-1) + JumpFloor(target-2); }else{ return -1; } } }
變態跳臺階:
public class Solution { public int JumpFloorII(int target) { /* 這裏可以按照上一題的思路來做 * f(n) = f(n-1) + f(n-2) + ... + 1 * f(1) = 1, f(2) = 2 */ if(target == 1 || target == 2){ return target; }else if(target > 2){ int sum = 1; while(target-1 > 0){ sum += JumpFloorII(--target); } return sum; }else{ return -1; } } }
進度 12/66
跳臺階和變態跳臺階