简单找个题目练习一下递归算法,输入一组数组,使用递归的方法计算数组之和。其实这个题目,用循环的方式也很简单就能解决,直接循环遍历一下相加就行了,但是我们用来练习一下递归。
先来找基线条件和递归条件
基线条件:当数组下标为0的时候,说明只剩一个值了,直接返回值就行
递归条件:长度大于0的话,就需要相加并递归调用,直到满足基线条件
package com.dlh.test.算法;
import java.util.Scanner;
public class 递归算法之计算数组之和 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] string = sc.nextLine().split(" ");
int[] array = new int[string.length];
for (int i = 0; i < string.length; i++) {
array[i] = Integer.parseInt(string[i]);
}
int result = calcnum(array,array.length-1);//此处填入数组最右侧的下标,从右侧开始往左侧以及相加
System.out.println(result);
}
private static int calcnum(int[] array, int i) {
int result = array[i];
if (i < 1){//当数组下标小于1的时候,直接返回值
return array[i];
}else {
i--;//数组下标往左移动一位
result = result + calcnum(array,i);//进行递归调用
}
return result;
}
}