什么是递归函数

1.递归指一个函数在它的函数体内调用它自身,执行递归函数将反复调用其自身,每调用一次就进入新的一层,递归函数必须有结束条件
当函数在一直递推,知道遇到墙厚返回,这个墙就是结束条件
所以递归要有两个要素,结束条件和递推关系
递归有两个基本要素
(1)边界条件:确定递归到何时终止,也称为递归出口
(2)递归模式:大问题是如何分解成小问题的,也成为递归体。递归函数也只有具备了这两个要素,才有在有限计算后得出结果
在递归函数中,调用函数和被调函数是同一个函数,需要注意的是递归函数的层次,如果把调用函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;第i层递归调用自身称为第i+1层,反之,退出第i+1层应该返回第i层
一个递归函数的调用过程类似于多个函数的嵌套的调用,只不过调用函数和被调函数是同一个函数,为保证递归函数的顺利进行,系统需设立一个工作栈,具体的说,递归调用的内部执行过程如下:
(1)运动开始时,寿险为递归函数建立一个工作栈,其结构包括值参数,局部变量和返回地址;
(2)每次执行递归函数之前,把递归函数的值参与局部变量的当前值以及调用后的返回地址压栈
(3)每次递归结束后,将栈顶元
2.递归函数直接或间接的调用了自身,这种调用方式叫做递归调用,说白了,还是函数调用,既然是函数调用,那么久有一个原则,所有被调用的函数将创建一个副本,各自调用着服务,而不受其他函数影响
死递归:某一个函数进入了无限调用自身的情况,永无止境的消耗内存等资源,这在编程方面是大忌
如果是递归函数,一定会在某一个地方存在能够返回上一层函数的代码,否则必定死递归,应为一旦某个函数A调用了函数B(或者自己),那么A中的代码会停在调用的位置,而转向B中去执行,同理,如果B又调用函数C,那么B又停在调用的位置,去执行C,如果无限调用,那么程序是永远不会停止的。
当然,也有这种情况,A调用B,然后继续自己的代码,不管B的死活,这种不在我们的讨论范围内,因为那涉及到另一种编程方式多线程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值