递归慢的原因

1、子问题的重复计算(其一)(有些递归会,并不是所有递归都会重复计算)

 

转载于:https://www.cnblogs.com/FlFtFw/p/10248849.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 发生无限递归原因递归调用的函数中包含了对自身的调用,而没有设定退出递归的条件。如果递归的退出条件没有设置好,就导致递归调用无限进行下去,直到超过计算机系统的栈大小而出现程序崩溃、堆栈溢出的现象。这种情况常常导致程序卡死或崩溃。 ### 回答2: 无限递归指的是在计算机程序中,函数或过程持续地调用自身,从而导致程序陷入无限循环的状态。无限递归原因通常是由于函数或过程内部的逻辑错误或不完善的停止条件导致。 无限递归的现象主要表现为程序进入了一个无法终止的循环。当函数或过程被调用时,它继续调用自身,而且没有适当的停止条件。这样就导致函数或过程无限循环地执行,消耗大量的计算资源,最终可能导致程序崩溃或崩溃。 在这个过程中,计算机的内存中的堆栈空间被不断地占用。每次递归调用时,都将当前函数的局部变量和返回地址压入栈中。当递归调用次数过多时,栈空间被耗尽,导致栈溢出错误。这也是一个常见的无限递归现象。 当发生无限递归时,程序可能陷入一个无限循环的状态,无法正常终止。CPU持续地执行同一个函数或过程的代码,不断地重复相同的操作。这样导致程序不能继续执行后续的代码,也无法返回到调用者。在此期间,程序可能永远卡住或反应迟缓,用户无法操作或响应。 为了避免无限递归,开发者应该仔细设计和编写递归函数或过程,确保有正确的终止条件和递归调用的边界。此外,调试工具和技术也可以帮助开发者及时发现和修复无限递归问题,以保证程序的正常运行。 ### 回答3: 发生无限递归原因是程序中存在一个函数或方法在执行的过程中无限循环地调用自身。具体来说,当一个函数被调用时,它进入一个执行环境,在环境中包含一些变量和执行的语句。如果在函数体内部又调用了自身,那么它再次进入这个执行环境,导致自身被无限循环调用,从而形成无限递归。 无限递归的现象主要体现在程序陷入了一个无限循环的状态,导致程序无法继续向下执行。这时,程序可能消耗大量的计算资源,比如内存和处理器时间,使程序运行缓甚至崩溃。 一种常见的无限递归现象是栈溢出。在函数调用的过程中,每次函数被调用时,在内存中分配一个新的栈帧来保存函数的局部变量和返回地址。当函数被重复调用的次数越多,这些栈帧被不断地压入到内存的栈区中,造成栈空间的耗尽,最终导致栈溢出。栈溢出是一种常见的无限递归的结果,它使程序崩溃或产生未定义的行为。 为了避免无限递归,需要仔细检查程序中的函数调用,确保没有出现循环调用自身的情况。同时,可以使用递归的终止条件来确保递归函数在某个条件下停止递归,从而避免无限递归的发生。此外,对于递归调用较深的情况,还可以考虑使用迭代或其他方法替代递归,以减少内存消耗和提高程序执行效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值