递归数组求和,打印 i 到 j

上篇文章当中说到了递归的相关知识,总的来说,还是一句话:多做题才能有收获
下面是递归打印 i 到 j 这道题,实现相当简单,但是想得过程稍微动点脑子,要递归打印从某个数到某个数,那就要想清楚如何确定函数,函数的终止条件出口,

public class Main{
    public static void main(String[] args){
    f(1,6);
    }
    public static void f(int i,int j){
    //找出口
        if(i>j)
            return;
        System.out.print(i+"\t“);
        //找变化
        f(i+1,j);
    }
}

稍微花点时间看一看,就知道基本思路了。
本来是想再粘一下有关数组求和的递归,这里推荐一下这位大佬:
https://www.cnblogs.com/yg1024/p/7726481.html
初入递归的小伙伴可能会觉得较为难懂,这里对一段代码做一下分析。

public static int f(int[]a,int begin){
	if(begin==a.length) 
		return 0;
//对初学者较为难理解的在于这处
解读:
自己假设一个数组int []a = {1,2,3,4,5};
传入f(a,0),首先变成了return f(a,1)+a[0]
f(a,1)没有解决,所以类似抛出异常一样,向上抛出,
变成了return f(a,2)+a[2]
多次递归,最后当begin=a.length时结束,
前面的f(a,(1~5))均为0,本质上f()这个函数
只是为了作为一个标记,每回返回的是a[i]的这个值,
相当于每次加一个数组里的数
	int x = f(a,begin+1);
		return x+a[begin];
}

看似简单的实现的代码,其实坑比较多,建议再自己多想想,欢迎大家指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wo_yuanchengfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值