對於本題,前提只有 一次 1階或者2階的跳法。
a.若是兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n-1個臺階,跳法是f(n-1);
b.假定第一次跳的是2階,那麼剩下的是n-2個臺階,跳法是f(n-2)
c.由a和b假設能夠得出總跳法爲: f(n) = f(n-1) + f(n-2)
d.而後經過實際的狀況能夠得出:只有一階的時候 f(1) = 1 ,只有兩階的時候能夠有 f(2) = 2
e.能夠發現最終得出的是一個斐波那契數列,可用循環或者迭代來作。編程
class Solution { public: int jumpFloor(int number) { if(number <= 2) return number; int a = 1; int b = 2; int sum = 0; for(int i = 2;i < number;++i) { sum = a + b; a = b; b = sum; } return sum; } };
注意觸類旁通。spa