1. 程式人生 > >A題之變態青蛙跳

A題之變態青蛙跳

.... 問題 public log post 第一次 擁有 ati popu

一僅僅青蛙一次能夠跳上1級臺階,也能夠跳上2級……它也能夠跳上n級。

求該青蛙跳上一個n級的臺階總共同擁有多少種跳法。
分析: 這是一個斐波拉契數列的引申問題,先來看看斐波拉契數列: n<=1, ? ?f(n)=1; n>=2, ? ?f(n)=f(n-1)+f(n-2); 假設這個題變一下“一僅僅青蛙一次能夠跳上1級臺階。也能夠跳上2級。求該青蛙跳上一個n級的臺階總共同擁有多少種跳法。”就成了典型的斐波拉契數列問題了。
回過頭來看這個題,貌似沒有頭緒。怎麽辦,採用最笨的方法。窮舉: n<=1, ? ? f(n)=1; n=2, ? ? ? ?f(2)=2; n=3, ? ? ? ?f(3)=4; ? ? 第一次走一步,2種。第一次走倆步,1種。一次走三步。1種; n=4, ? ? ? ?f(4)=8; ? ? 第一次走一步,4種。第一次走倆步,2種;第一次走三步。1種。一次走四步,1種。 是不是看到規律了: f(n)=f(n-1)+f(n-2)+.....+f(1)+f(0)=2f(n-1)

上Java代碼:
public class Solution { ? ? public int JumpFloorII(int target) { ? ? ? if(target<=1) ? ? ? ? ? ? return 1; ? ? ? ? else ? ? ? ? ? ? return 2*JumpFloorII(target-1); ? ? } }

A題之變態青蛙跳