【剑指Offer | C++ 】面试题10:斐波那契数列 | 青蛙跳台阶问题

24 篇文章 0 订阅
24 篇文章 0 订阅
文章介绍了如何使用循环解法自底向上计算斐波那契数列的第n项,避免了递归的效率问题。接着探讨了青蛙跳问题,将其与斐波那契数列关联,并展示了当青蛙可以跳1~n阶时,跳上n级台阶的跳法数量的公式推导,得出f(n)=2^(n-1)的结论,利用数学归纳法证明。
摘要由CSDN通过智能技术生成

题目: 求斐波那契梳理的第n项

不推荐递归解法,循环解法:
自底向上计算
其实就是模拟人手动计算的过程
算f(2)、f(3)……f(n)

int main()
{
    int n = 6; //计算f(6)
    int fibZero = 0, fibOne=1;
    int fibN;

    //开始计算f(n) 从f(2)开始计算
    for (int i = 2; i <= n;i++){ 
        fibN = fibZero + fibOne;
        fibZero = fibOne;
        fibOne = fibN;
    }
    cout << fibN;
}

拓展:求斐波那契数列的前N项和
其实很简单,
F(0) = F(0) = f(0)
F(1) = F(0) + F(1) = f(0) + f(1)
F(2) = F(1) + F(2) = f(0) + f(1) + f(0) + f(1) = 2*(F(1))

题目: 青蛙跳问题,青蛙可以一次跳 1~2 阶台阶,跳上n级台阶有多少跳法?

等价于斐波那契数列

升级版:

题目: 青蛙跳问题,青蛙可以一次跳 1~n 阶台阶,此时跳上n级台阶又多少种跳法?

f(1) = 1
f(2) = f(2-1) + f(2-2)
f(3) = f(3-1) + f(3-2) + f(3-3)
其中如 f(3-1) 表示青蛙一次跳1阶加上跳 (3-1)阶的跳法
那么:

f(n-1) =        f(n-2) + f(n-3) + …… + f(0)
f(n) = f(n-1) + f(n-2) + f(n-3) + …… + f(0) 
     = f(n-1) + f(n-1) 
     = 2 *  f(n-1) 

数学归纳法可证
f(n) = 2^(n-1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赛文X

觉得不错就打赏下呗mua~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值