递归(初级)

递归是编程中的重要概念,其特点是函数在定义中调用自身,并需存在终止条件避免无限递归。递归程序简洁但效率较低,易导致栈溢出。本文通过阶乘和楼梯问题两个递归入门例题,阐述如何理解和应用递归,其中楼梯问题与斐波那契数列相联系。
摘要由CSDN通过智能技术生成

前言:
递归的不易在于,我们通常考虑事务的思维从近及远的,而递归恰好相反。在没有思路时拿起草纸,写点自后向前的通式或是花些简图可以有效地帮助我们了解递归。最好跑点代码,因为对于计算机而言,根本就没有递不递归啥的(此处有计算机高傲的眼神)。


特点:
1,函数定义中直接或间接地调用了本函数
2,必定存在可使递归调用终止的条件,否则导致出现无限递归。
3,递归程序通常简洁,但有运行效率低。
4,在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

递归运行简图:
图片取自百度知道


下面给出两道递归的入门题,这两道都是可以总结出f(n)和f(n-1)甚至f(n-2)的关系的。(给出的代码是函数代码)

习题一: n的阶乘:

给定一个正整数n,求n的阶乘。

分析: 从后向前看可以找到通式f(n)=f(n-1)*n;在设置递归出口条件即可。

代码:

int fn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值