欠伸展肢体,吟咏心自愉。这篇文章主要讲述递归和非递归:青蛙跳台阶讲解相关的知识,希望能为你提供帮助。
递归的介绍:程序调用自身的编程技巧称为递归。递归是一种算法。它通常把一个复杂问题层层转化为一个与原问题相似的规模较小的问题求解。递归的两个必要条件:
【递归和非递归(青蛙跳台阶讲解)】1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。
2.每次递归调用之后,越来越接近这个限制条件。
解题分析:青蛙跳台阶
1.现在有N阶台阶,小青蛙一次可以跳一阶台阶,也可以一次跳两阶台阶。
2.当N = 1时,小青蛙只有一种跳法,就是跳一个台阶。
3.当N = 2时,小青蛙有两种跳法,就是连续两次跳一阶或者跳一次两阶。
4.当N = 3时,小青蛙有三种跳法,
假设第一次跳一个台阶,那么就只剩下两个台阶,就只能是按照N = 2时的跳法。
如果第一次跳两个台阶,那么就只剩下一个台阶,就只能按照N = 1时的跳法。
以此类推,形成一定的规律
当为n阶时,跳台阶的总次数为(n
- 1) +(n
- 2)
注意:这里的(n - 1)代表的是当N = n - 1时青蛙跳台阶一共有多少种跳法。所以要计算n - 1 个台阶的总跳法,就是( n - 2) + ( n - 3)代码展示:递归
缺点:耗时长,从后面往前算,很多数字要算重复,容易造成stack overflow(栈溢出)。
非递归:
缺点:要考虑存储空间,当N过大时,int类型可能存不下,会溢出,造成求出来的结果错误。
总结:
青蛙跳台阶和斐波那契数列是有相似之处,只不过斐波那契数列前两位数都是1;而青蛙跳台阶前两位数是1 和 2。其他的思路是一致的。
推荐阅读
- C语言简单实现“猜数字小游戏”
- lvm缩减和迁移快照删除等
- 如何为 .NET 项目自定义强制代码样式规则#yyds干货盘点#
- springboot html vue.js 前后分离代码示例
- 4种典型限流实践保障应用高可用|云效工程师指北
- OpenHarmony——ets自定义弹窗UI组件封装
- 月薪过万必会的(双亲委托模型)
- RT-Thread快速入门-消息队列
- HarmonyOS之CSS实现哆啦A梦头像