递归算法效率简析

本文探讨了递归算法中常见的栈溢出问题,并强调了递归函数在没有合适终止条件时可能导致效率低下。通过阶乘和斐波那契数的例子,作者指出递归在某些情况下的效率远逊于循环迭代,特别是对于需要多次调用自身的情况,如计算较大斐波那契数。建议开发者理解何时使用递归,避免不必要的资源消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面文章提到过递归算法,作了一些基础的介绍,举了几个比较简单的例子。
今天同样是递归问题,来给大家分享一下。

递归最常遇到的问题就是栈溢出,所以在函数递归时一定要有合适的终止条件函数在每次递归时,每进行一次新的调用,都将创建一批变量,它们将掩盖递归函数前一次调用所创建的变量。

对于前一节讲到的用递归函数实现阶乘,其实并不是阶乘的很好的一个例子,很多人认为这种做法比较“高级”,实则不然,这种做法的效率对于用循环求阶乘没有任何优势,反而有些问题用阶乘来做会带来恐怖的效率之低      》__》   要明白:阶乘是函数的一次一次调用,每个函数的开启,参数必须压到堆栈中,为局部变量分配内存空间,寄存器的值必须保存等等,所有的递归均如此,所以简单的循环迭代可以解决的事,何必大开内存消耗呢??

如果你有所怀疑,你可以尝试一下用阶乘来求斐波那契数,斐波那契数就是以阶乘的形式定义的,那用阶乘来求有何不妥??把下面代码运行一下,计算第五十个斐波那契数,可以尝试一下用下面这个递归算法算出结果得多长时间   -_-

#include<s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值