变态跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

 

解题思路

记第n级台阶的跳法有f(n)种:

        从第n-1级跳1步,有f(n-1)种;

        从第n-2级跳2步,有f(n-2)种;

                  ……

        从第1级跳n步,有f(1)种;

于是f(n)=f(n-1)+f(n-1)+……+f(1)

使用数列相关知识,推导通项公式:

    f(n)= f(n-1)+f(n-1)+……+f(1)=S(n-1),即有

    f(n) = S(n-1)           ①

    f(n-1) = S(n-2)        ②

①②式左右相减:

    f(n)- f(n-1)= S(n-1)- S(n-2)= f(n-1),即有

 


可得:f(n)=2 f(n-2),又易知f(1)=1,故:

f(n)是以1为首项2为公比的等比数列

       f(n)=2n,n=1,2,3,……

代码:

int JumpFloorII(int target) {

     return 1<<(target-1);

}

 

posted @ 2017-05-07 15:20  Cloud2020  阅读(61)  评论(0)    收藏  举报