【剑指offer】9:变态跳台阶

题目描述:

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

解题思路:

先考虑最简单情况就是只有一级台阶,仅有一种跳法。两级台阶,有两种跳法(1+1和2)。三级台阶,有四种跳法(1+1+1,2+1,1+2,3)……

用表格来展示可以方便大家观看:

  台阶数    跳法 数量
         1 1 1
         2 1+1,2 2
         3 1+1+1,2+1,1+2,3 4
        ... ... ...
         n   2^(n - 1)

根据表格可以总结为f(n) = 2*f(n -1),是一个非常明显的递归公式,同样,为了效率问题,可以采用循环方式解决

代码实现

(C实现):

int jumpFloorII(int number ) {
    // write code here
    int res = 1;
    if (number <= 0 || number == 1) return number;
for (int i = 2; i <= number; i++) { res = res * 2; } //res = jumpFloorII(number - 1) * 2 递归代码 return res; }

(JavaScript实现):

function jumpFloorII(number)
{
    // write code here
    var res = 1;
    if (number <= 0 || number == 1) {
        return number;
    }
for (var i = 2; i <= number; i++) { res = res * 2; } //res = jumpFloorII(number - 1) * 2; 递归代码 return res; }
posted @ 2021-04-14 20:56  zhang十六  阅读(45)  评论(0编辑  收藏  举报