3

递归和非递归:青蛙跳台阶讲解

 2 years ago
source link: https://blog.51cto.com/u_15543309/5142682
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

递归和非递归:青蛙跳台阶讲解

原创

步步为码 2022-03-24 10:38:41 ©著作权

文章标签 递归 青蛙跳台阶 斐波那契数列 文章分类 C/C++ 编程语言 阅读数327

递归的介绍:程序调用自身的编程技巧称为递归。递归是一种算法。它通常把一个复杂问题层层转化为一个与原问题相似的规模较小的问题求解。


递归的两个必要条件:

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(栈溢出)。

递归和非递归:青蛙跳台阶讲解_递归_02

缺点:要考虑存储空间,当N过大时,int类型可能存不下,会溢出,造成求出来的结果错误。

青蛙跳台阶和斐波那契数列是有相似之处,只不过斐波那契数列前两位数都是1;而青蛙跳台阶前两位数是1 和 2。其他的思路是一致的。

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK