答应我,这次彻底搞懂递归!

基于读者诉求,更新《软件工程专业导论系列》最后一篇!哎,就是玩儿!
在这里插入图片描述

1. 理解什么是递归??

首先不用着急的去查阅‘递归’的定义,一切的程序思想都是为了解决某个问题而服务的!
a. 从生活中看递归
假设你在电影院的第X排坐下看电影,你想知道X是多少?但是你不准备自己从前往后数。于是,你问你前一排(X-1)的人:你坐在哪一排?你前一排的人跟你一样,他模仿你问他前一排(X-2)的人:你坐在哪一排?……。直到坐在第一排的人回答他在第一排。然后第2排的人把答案告诉第三排,第三排又告诉第四排,……,第X-1排告诉你。你便可以知道X是多少了! 【这是一个先递进再回归的过程】
假设你仍然不理解递归,那么你接下来会打开浏览器,输入搜索‘递归的含义’;然后你发现了解递归你需要先了解什么叫边界条件,于是你搜索‘边界条件’;等你弄明白了边界条件的含义,你又反过来继续理解递归,这次你终于明白了递归是什么!这不就是一个典型的‘递归过程’! 【这仍然是一个先递进再回归的过程】

b. 从简单的数学问题看递归
从阶乘看递归,f(n)=n!。
f(4)
= 4f(3)
=4
(3f(2))
=4
(3*(2f(1)))
=4
(3*(21))
=4
(32)
=4
6
=24
【这仍然是一个先递进再回归的过程】

c. 官方定义
为了解决一个大型复杂的问题,将其层层转化为一个个与原问题相似的规模较小的问题。递归可以定义无限的相似性事物。递归的特点是自身调用自身,高阶调用低阶。
递归基础:定义、构造和计算的起点。
递归过程:由后向前代入,直至代入到递归基础,再由递归基础向后计算直至计算出最终结果,即由前向后计算。
:递归与循环的区别在于:循环是有去无回!递归是有去有回

2. 实现递归的三个要素

a. 递归函数:实现所需功能的递归函数。
b. 递归条件:循环递归的条件。
c. 基线条件:停止循环递归的条件,避免形成死循环。

3. 递归的应用

a. 斐波那契数列
一组无穷数列:1,1,2,3,5,8,13,21,……。求第n个数f(n)=?
解:递归函数:f(n)=f(n-1)+f(n-2);
递归条件:i belong 3 to n;
基线条件:i = 1 or 2。

int func(int n)
{
   if(n <= 2)
        return 1;
   return func(n-1)+func(n-2);
} 

b. 简单的青蛙跳台阶
一只青蛙一次可以跳上1级或2级台阶,求该青蛙跳上n级台阶有多少种跳法?
解:递归函数:f(n)=f(n-1)+f(n-2)
递归基础:f(1)=1,f(2)=2
递归条件:i belong 3 to n
基线条件:i = 1 or 2

  int func(int i)
  {
	 if(n<=2)
          return n;
     return func(n-1)+func(n-2);
  }

4. 参考文献:

[1] 张海藩,吕云翔. 软件工程[M].人民邮电出版社:, 201309.348.
[2] Varun Gupta, Chetna Gupta. Research and Evidence in Software Engineering: From Empirical Studies to Open Source Artifacts[M]. CRC Press:2021-04-15.
[3] F. L. Bauer, J. B. Dennis, W. M. Waite, et al. Software Engineering[M]. Springer, Berlin, Heidelberg:1975-01-01.

本人水平有限,文中错漏缺点在所难免,欢迎私信或评论区留言!
原创不易!鼓励收藏点赞加分享!
#非科班码农的自我救赎!共勉!#
#知乎/简书/CSDN同号:37yuany#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

37yuany

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值