递归

一、递归的定义

一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。用递归过程定义的函数,称为递归函数,例如连加、连乘及阶乘等.
简单的来说,程序反复调用自身即是递归.

二、递归的使用

递归是如何运作的?在这里我们用一张图片来展示一下.

这是一个A函数递归调用自身的过程,因为递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可.千万不要去纠结每一级调用和返回的细节!
写递归的时候我们一定要注意三点:

  • 找整个递归的终止条件:递归应该在什么时候结束?
  • 找返回值:应该给上一级返回什么信息?
  • 本级递归应该做什么:在这一级递归中,应该完成什么任务?

三、递归的例题

首先、给出一个简单的例子,从 1 加到 100 的和,我们都已经很熟悉结果是5050了,拿到这个题,都很容易想到用循环来做,在这里就不写循环方法的代码了,直接进入正题——递归求解

//1到100的和
public class Recursion {
    public static void main(String[] args) {
        System.out.println(f(100));
    }
    public static int f(int n){  //函数f 就是计算1到100的和
        if(n==1){	//判断特殊情况
            return 1;
        }
        return f(n-1)+n;
    }
}

第二个例子就是用递归的方法求 n 的阶乘
递归阶乘n! = n * (n-1) * (n-2) * …* 1(n>0)

    public static Integer recursionMulity(Integer n){
       if(n==1){
          return 1;
       }
       return n*recursionMulity(n-1);
    }

当然这样的典型例子还有很多,在这里就不写了,递归最重要的就是理解其解题的思想,再加上自己去多做题多练习,慢慢就能找到它的规律所在了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值