用C语言对最基础的青蛙跳台阶问题的解决

本文介绍了青蛙跳台阶问题的两种解决方案,包括使用递归和循环的方法。递归方法虽然直观但效率较低,循环方法通过动态规划提高了计算效率。文章以CSDN为平台,探讨了如何解决这个问题,并通过实例展示了计算50层台阶的跳法,揭示了在大量计算时可能出现的数值溢出问题。
摘要由CSDN通过智能技术生成

  青蛙跳台阶问题有许多版本,这里将解决的是最基础的青蛙跳台阶问题。游戏规则如下:

  青蛙一次可以跳1级或者2级台阶,问跳到N级有多少种跳法?

这是一个类似于斐波那契数列的数学问题,不过斐波那契数列开始是1,1,2,3,5,8……而该问题是1,2,3,5,8……开始,内容大同小异,理解方式可谓是一模一样。这里我们从两种方法去解决这个问题。

  方法一:

先上图

2ab06f77b45e42eeb84a4abc4ae07acf.png

利用函数的递归求解。

在青蛙跳一层台阶时,只有一种跳法;

青蛙跳两层台阶时,有两种跳法;

在青蛙跳第三层台阶时可看做让其先跳一层台阶,然后还剩两层台阶就看做两层台阶跳法(假设跳法看做函数sum,则有sum(3)=sum(1)+sum(2));

当跳第四层台阶时,同理看做先跳一层,然后看做三层台阶的跳法,或者先跳两层,剩下两层看做两层台阶的跳法,则有sum(4)=sum(3)+sum(2);

用相同的方法,当青蛙第一次只跳一层或者两层,则恒有sum(n)=sum(n-1)+ sum(n-2)。这样便可以弄清楚最简单青蛙跳台阶问题。但是这种方法存在一个弊端。

如图:2322dfe514ec4e978fafeba3fd5235fc.png

 再进行台阶数较多的计算中难以计算,对于效率十分低下。所以这时我们再走过一种方法。

方法二:

上图:c07509e225ab4ebcaf2a9fd6dad0f6ac.png

 

在函数中构建局部变量,再利用循环将所求和导出这样对计算机的要求并不高,大大提升了效率。注意(i>=3与i--是非常重要的,我们需要用这个来循环结束。为什么是i>=3呢?因为在i=1和i=2时是起始的两个元素我们需要用到这两个元素去求后面的元素,而i=1 或者2是,我们应该知晓的值,类似于数学数列给的前后关系,需要给出的两个值)

计算50层的跳法:

60f95cdbb3164c889a2ba1ec20a2c313.png

 为什么会是负值?因为程序的值得范围是有限的,超出了这个范围的旨,计算机将随机给出一个值,所以我们目前也只能用一个计算小一些的目标值。但是方法思想是正确的。

人生第一篇CSDN。

哈哈哈哈写到后面有一些词穷了,水一下了😊😊

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值