剑指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 @   言午丶  阅读(133)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示