递归算法及原理

从前有座山,山里有座庙,庙里有个老和尚和小和尚。老和尚对小和尚说:“从前有座山,山里有座庙,庙里有个老和尚和小和尚。老和尚对小和尚说:从前有座山,山里有座庙,庙里有个老和尚和小和尚。老和尚对小和尚说:……”
这是一个古老的童谣,故事可以一直讲下去,陷入一种无限循环。程序设计中的递归也是如此,递归调用是函数内部调用自身的过程。递归必须要有结束条件,否则会进入无限递归状态,永远无法结束。

1.递归函数

例如,求解n的阶乘。
n的阶乘等于n×(n-1)!,可以采用递归函数实现。设计递归函数三部曲:
(1)函数名和参数
可以定义递归函数名为fac(),因为要求解n的阶乘,因此需要设计一个参数n。
(2)递归的结束条件
递归的结束条件即递归的出口,通常是特殊情况或者递归到最末端直接可解的情况,如果没有这部分,递归可能会出现死循环,永远无法结束。本题中0和1的阶乘均为1,直接返回1。
(3)自调用
在函数内部调用自身,调用自身时函数名相同,参数类型、数量、顺序也相同,参数值通常不同。本题中n! = n × (n - 1)!,(n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

趣学算法

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

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

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

打赏作者

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

抵扣说明:

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

余额充值