算法探索实录 - 4、递归

目录

一部电影 - 《土拨鼠之日》

递归和循环

递归三要素

一个栗子:求1-n的总和

小结


 

  • 一部电影 - 《土拨鼠之日》

递归剧情的电影:男主Phil陷入时空错乱中,开启了他怀疑人生的一天,每天醒来生活中都会出现相同的人,发生同样的事情,每天起床都有同样的电台广播,有个人会和他搭讪,老太太会和他聊天询问他早餐和天气,路上遇见乞丐和卖保险的旧朋友,报导节目等等,无论他如何选择度过这一天,他都始终无法再前进一步,直到女主Rita被他打动并且共度良宵后,才停止了这永远重复的一天。类似的电影还有《恐怖游轮》

  • 递归和循环

我们可以将这部电影的拍摄手法称之为递归拍摄手法,递归的本质也是一种循环,重复的自己调用自己,和死循环不一样,递归会有条件的变化,直到条件变化到特定的时候,递归结束,而电影中的结束条件就是男主撩到女主收获爱情。递归操作不当就容易引起死循环,比如电影中的男主如果是个gay里gay气的人,对女人根本不感兴趣,那么可能他就永远活在土拨鼠之日中了。

 

  • 递归三要素

  1. 每次递归变量必须要有变化,递归的规模要减少
  2. 必须要有终止的边界条件,否则将陷入死循环
  3. 提炼相同的操作逻辑,前一次的输出就是后一次的输入
     
  • 一个栗子:求1-n的总和

public class ExampleUnitTest {

    @Test
    public void recursiveSumTest() {
        int i = recursiveSum(100);//求1-100的总和
        System.out.println("1-100的总和为:"+ i);
    }

    /**
     * 利用阶乘求1-n的总和
     * @param n
     * @return
     */
    public int recursiveSum(int n) {
        if (n == 1){
            return 1;
        }
        return n + recursiveSum(n -1);
    }
}

运行结果:1-100的总和为:5050

运行轨迹:

  • 小结

  1. 递归必须要一个回归的出口,要不然将陷入死循环
  2. 深层次的递归将频繁进出栈分配内存空间,运行效率较低,当层次较深时不推荐使用递归
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值