剑指Offer:跳台阶

一.题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
 

二.解答

f(n) = 0 (n = 0)

         1 (n = 1)

         2 (n = 2)

         f(n - 1) + f(n - 2)

 

三.代码

1.递归

int jump(int n)
{
  if (n == 0)
    return 0;
  if (n == 1)
    return 1;
  if (n == 2)
    return 2;
  return jump(n - 1) + jump(n - 2); 
}

 

 

2.非递归

int jumpFloor(int number){

        int former1 = 1;
        int former2 = 2;
        int target = 0;

        if (number == 0)
            return 0;
        if (number == 1)
            return 1;
        if (number == 2)
        {
            return 2;

        }else{
            for (int i = 3; i <= number; i++)
            {
                target = former1 + former2;
                former1 = former2;
                former2 = target;
            }
        }

        printf("%d", target);
        return target;
  }

 

 

恭喜你通过本题

运行时间:617ms

占用内存:504k

 

posted @ 2019-07-18 15:13  言午丶  阅读(129)  评论(0编辑  收藏  举报