JavaSE_递归

递归

递归简介:

  • 普通的方法:A方法调用B方法。(是不是很容易理解?)

然而↓

  • 递归:A方法调用A方法,唉,我自己调用自己。(是不是有点蒙了?)
  • 递归作用:利用递归可以用简单的程序来解决一些复杂的问题。通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略之需少量的程序就可以描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。递归的能力在与有限的语句来定义对象的无限集合。
  • 递归的结构:
    • 递归头:什么时候不掉用自身方法。(如果没有递归头,程序将陷入死循环)
    • 递归体:什么时候需要调用自身方法。

递归的实际应用举例:

肯定会疑惑了,递归究竟有什么用呢?自己调用自己难道是为了好玩?闲的**?当然不是了,在上面简介中就说道递归可以用简单的程序来解决一些复杂的问题。就比如,我们可以求一个数的阶乘↓↓↓

在这里插入图片描述

我们不用递归就会麻烦很多,如下图↓↓↓

在这里插入图片描述

在这里插入图片描述

这个···不具代表性。

当然除了阶乘我们的递归还是大有用处的↓↓↓

练习:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?题目出处点这里

我们简化一下:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?

分析:由“经过了七个村子后还剩两只鸭子”可以得出到第八个村子时还剩2只鸭子。可以得出f(8)=2;而在第七个村子时鸭子的数量为f(7)=2*2+1;第六个村子时,鸭子数量为f(6)=f(7)*2+2.以此类推。

上代码:↓↓↓(这可是我自己解得哦,不信你可以去看看原文章,因为我们只涉及到递归,所以···)

在这里插入图片描述

我们可以得出:这个人出发时赶510只鸭子。

然后···我思考了一下,写出了以下代码↓

在这里插入图片描述

再一看输出结果QAQ在这里插入图片描述

我哭了,算了找不出什么可以用递归简化的东西了,也别为难我了,我也只是个初学者啊!!!!

算了,直接进行原理讲解吧QWQ

递归原理讲解(图)

就以阶乘为例吧:

在这里插入图片描述

自己琢磨琢磨,会懂的。

本人还处于初学阶段,有何错误希望大佬们可以在评论区指出

在这里插入图片描述

千万要记住,能不用递归就不要用递归

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值