Description
Solutions
青蛙要想跳到target級臺階,她可以從第0個臺階直接(一次)跳到target級,或者從第1級臺階直接跳到target級,...或者直接從第target-1級臺階直接跳到target級。
因此跳到target級臺階跳法JumpFloorII(target) = JumpFloorII(1) + JumpFloorII(2) + ... + JumpFloorII(target-1)
通過分析,其實對應的結果序列就是:1,2,4,8... 即爲指數序列
PS:之所以只考慮”直接“,不考慮間接,是因爲間接會導致重複,例如青蛙可以先跳到第m級臺階然後直接跳到target級(0->m->target),如果是間接方式:0->m->n->target,那麼就會和0->n->target的方式重複。
Code
public int JumpFloorII(int target) { if(target <= 0){ // 非法輸入 return 0; } else if(target == 1){ // 遞歸終止條件 return 1; } else { // 遞歸操作 // return 2 * JumpFloorII(target-1); // 乘方操作 return (int)Math.pow(2, target - 1); } }