什么是递归算法

本文探讨了递归的概念,通过举例说明了如何在排序算法中使用递归,如快速排序和二分归并。递归是一种计算过程,常用于分治算法,如计算5的n次方和菲波那契数列。然而,递归虽强大,但需要注意结束条件和效率问题,因为过多的递归调用可能导致性能下降。建议在能用循环解决的情况下避免使用递归。
摘要由CSDN通过智能技术生成
本人本科是电子专业,读研走上了计算机视觉这条“不归路”。只因本科编程方面的学习、训练不够充足,所以现在只能死磕编程和算法。
最近上的一门算法课,老师讲了几种排序方法:冒泡、快速、插入、分堆、二分归并····冒泡和插入是很简单的循环比较交换位置的排序方法,而快速和二分归并则需要用到递归的方法。什么是递归,什么时候需要用到递归呢?

参考了大神的文章什么是递归函数?

什么是递归

一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。即函数直接或间接调用函数本身,则该函数称为递归函数。

什么时候需要用到递归

这就不得不提起分治算法思想,分治思想字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
想更深入了解的指路[五大常用算法之一:分治算法](https://blog.csdn.net/weixin_44489823/article/details/92799755)

上例子

#5的n次方
def wudencifang(n):
    if n == 1:
        return 5
    return 5 * wudencifang(n-1)


print(wudencifang(3))

 菲波那嵌数列[斐波那嵌数列](https://baike.baidu.com/item/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97/99145?fr=aladdin)


def feibo(n):
    if n <= 2:
        return 1
    else:
        return feibo(n-1) + feibo(n-2)

print(feibo(8))

注意事项

递归最最最重要的是结束条件,若没有结束条件就是一个死循环。另外一个就是递推关系,执行递归函数将反复调用其自身,每调用一次就进入新的一层。

最后要注意的是,每调用一次递归函数,就要分配一次局部变量、一次形参、一次调用函数地址、一次返回值。若调用n次,效率必不会有多高。因此,我们遵循能用循环解决的,尽量不使用用递归.
循环能干的事,递归都能干;递归能干的循环不一定能干!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值