如何有效地理解程序中的递归

本文介绍了理解和掌握递归算法的思路,包括递归的基本理解、经典递归实例——阶乘的解析以及递归的三个关键元素:初始值、结束条件和算法。通过简化复杂的理论,帮助读者更直观地学习和运用递归。
摘要由CSDN通过智能技术生成

写在前面

最近在重新学习《算法导论》这本书,在看到介绍递归的时候,想起了当时学习算法时的痛苦,递归是一种让人有爱与恨的算法理念,之所以爱是因为其的使用思路很清晰且算法复杂度等接近最优,恨就是因为它的思想太过于抽象了。。。

虽然现在对递归的理解仍然算不上透彻,但是也能算运用自如了,相信大家看完本篇博客后,学习我的“另类”方法,一定会豁然开朗(可能有些观点并不正确,但是有时候错误的观点反而能够让理解变得轻松,大家知道这些观点是错误的就行。)

对递归算法的基本理解

所谓递归,就是包含递推和回归两个自然过程,一方面要由外到里地深入,一方面又要由里到外地回到原点,这是我的基本看法,递推过程是决定整个算法的逐步计算过程,而回归就是将每一步计算的结果慢慢地进行总结,最后就能够得到我们想要的结果,说起来也还是比较抽象的,等看完下面的观点再回来看这一段基本理解就ok的。

实践是检验真理的唯一标准

我先上一个最经典的递归例子—求n的阶乘(java版):

public int get(int n){
    if(n<1){
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值