函数递归(详解)

一、什么是递归

在C语言中,递归就是函数自己调用自己

690d851b036c4852a670b26eaa7634c8.png

上面这个就是一个简单的递归,但是代码最终也会陷入死循环,导致栈溢出。 

二、递归的举例

1.求n的阶乘

我们知道的n的阶乘的公式为:n!=n*(n-1)!

根据函数可令n==0时,n的阶乘为1,其余的用上面公式计算

466cc433ed264593ac1c32e0e39a3189.png

2.顺序的打印整数的每一位

输入:1234   输出;1 2 3 4

输入;987     输出:9 8 7

1234%10就能得到4,1234/10得到123,123%10得到3,123/10得到12,12%10得到2,12/10得到1

pr(1234)就可以拆分成两步pr(1234/10)+printf(1234%10)

9d47297bbc494fb1ab663eca91e8f04f.png 

3.递归与迭代

像举例1,这个题很可能误用递归的方法,这个方法在计算大数据的情况下会出现错误

  1. 运算速度很慢
  2. 可能会超出函数栈帧

所以我们遇到这些题就要使用迭代的方法(通常是循环的方式)

这样既速度得到了提升,也不会存在超出范围的错误了 

 

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值