C语言初学基础篇:递归

文章介绍了递归的概念,包括直接和间接递归,并通过求解阶乘问题展示了递归的使用方法,分为递推和回归两个阶段。同时强调了使用递归需设置正确结束条件,虽然递归在某些情况下解决问题有独特优势,但通常牺牲了执行效率,因此不建议频繁使用。最后,文章提供了两种不同的C语言递归实现代码示例。

1.递归的定义

函数在调用另一个函数的过程中直接或间接地调用该函数自身,直接调用称为直接递归调用,间接调用称为间接递归调用。

直接递归调用 eg : ... f( ) —>f( ) ...

间接递归调用 eg : ... f1( ) —>f2( ) —>f1( ) ...

2. 使用递归调用解决问题的方法(有限递归)

  1. 原有的问题能够分解为一个新问题,而新问题又用到了原有的解法,这就出现了递归;

  1. 按照这个原则分解下去,每次出现的新问题是原有问题的简化的子问题;

  1. 最终分解出来的新问题是一个已知解的问题;

3.递归调用过程(两阶段)

  1. 递推阶段:将原问题不断地分解为新的子问题,逐渐从未知的向已知的方向推测,最终达到已知的条件,即递归结束条件,这时递推阶段结束。

  1. 回归阶段:从已知条件出发,按照“递推”的逆过程,逐一求值回归,最终到达“递推”的开始处,结束回归阶段,完成递归调用。

4.递归例子:求n!

  1. 算法分析:n! = n×(n-1)×(n-2)×...×1= n(n-1)!

  1. 递归公式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Runpire

希望我帮助到你了  ̄︶ ̄

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

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

打赏作者

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

抵扣说明:

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

余额充值