递归的优缺点

优点:

1. 简洁

2.在树的前序,中序,后序遍历算法中,递归的实现明显要比循环简单得多。

缺点:

1.递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址以及临时变量,而往栈中压入数据和弹出数据都需要时间。->效率

2.递归中很多计算都是重复的,由于其本质是把一个问题分解成两个或者多个小问题,多个小问题存在相互重叠的部分,则存在重复计算,如fibonacci斐波那契数列的递归实现。->效率

3.调用栈可能会溢出,其实每一次函数调用会在内存栈中分配空间,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出。->性能

  • 27
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
递归算法是一种自己调用自己的算法,求解n的阶乘的递归算法如下: ```python def factorial_recursive(n): if n == 0: return 1 else: return n * factorial_recursive(n-1) ``` 使用递归算法求解n的阶乘的优点是代码简洁易懂。在处理问题时,能够直接体现问题的本质,更符合人类的思维方式。但递归算法也存在一些缺点。首先,递归会导致方法的调用次数增加,从而增加了方法的内存消耗。对于大规模的计算,可能会导致溢出。其次,递归算法的时间复杂度较高,因为递归算法需要反复调用自身,导致了重复计算,效率较低。当n较大时,递归算法的效果明显不如非递归算法。 非递归算法是通过循环迭代来求解n的阶乘的,代码如下: ```python def factorial_non_recursive(n): result = 1 for i in range(1, n+1): result *= i return result ``` 非递归算法的优点是效率高,不会产生额外的方法调用,在计算大规模n的阶乘时,性能更好。但非递归算法的缺点是代码相对繁琐,可读性较差,不容易理解。 综上所述,递归算法和非递归算法各有优劣。递归算法可读性好,但可能会产生溢出和重复计算;非递归算法效率高,但代码相对繁琐。在实际应用中,应根据具体情况选择合适的算法递归算法适用于问题本质明确且规模较小的情况,而非递归算法更适用于问题规模较大的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值