从“数学归纳法”到理解

我们在使用递归的时候需要满足一些基本条件,如果不满足的话,就有可能出现无限递归,最后会导致堆栈溢出了。

满足条件:

  1. 严格定义递归函数作用,包括参数,返回值,其他变量。

  2. 先一般情况,后特殊情况。

  3. 有退出条件。在一般情况下,能让递归正常退出的条件。

  4. 每次调用必须缩小问题规模,且新问题与原问题有着相同的形式,即规律。

上面的条件一环扣一环,也可以缩减成两个主要条件:有规律,有退出条件。我们以上面的条件,来结合案例进行理解。

[](()2.3 小栗子

[](()2.3.1 递归求和

例题:

1+2+3+…+n=?

第一步: 严格定义递归函数作用,包括参数,返回值,其他变量。

我们初看题目,可以知道这是一个简单的求和,即从1开始:1+2+3+…一直加到n。所以我们可以定义一个入参为n,返回值类型为int的一个方法,既然是递归求和,我们的方法名就叫recursionSum。

public static int recursionSum(int n) { //为了方便调用,我用了static

return 0;

}

System.out.println(“公众号:Coder编程:” + recursionSum(0));

那么我们第一步就做完了。

第二步: 先一般情况,后特殊情况。

我们先用一般的情况进行求和计算,例如代入1,2,3这样的一般情况。即:

public static int recursionSum(int n) {

if(n == 1) {

return 1;

}

if(n == 2) {

return 1+2;

}

if(n == 3) {

return 1+2+3;

}

return 0;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值