递归的精髓在于不断的调用自身,从后往前处理数据计算得出结果。求数组最大值也是从后往前比较,回溯求最值。
往简单的看,和c++/c有很大的相似之处,只是代码表示上有区别。
代码如下:
//java递归实现求数组最大值
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner sc = new Scanner(System.in);
int n;
int []a;
a = new int[100];
n = sc.nextInt();
for(int i=0;i<n;i++){
a[i] = sc.nextInt();
}
System.out.println(max(a,n));
}
static int max(int []arr,int n){//方法重载
return max(arr,0,n);
}
static int max(int []arr,int from,int n){//方法重载
if(from==n-1){
return arr[from];//终止语句
}
else{
return Math.max(arr[from],max(arr,from+1,n));//递归关键句
}
}
}