1.明确要干嘛:求数组a[]中最小值
2.递归结束条件:
x=a.length-1;//扫描到数组中最后一个数
3.缩小参数范围:
a[x]——>a[x-1]——>a[x-2]——>……——>a[0]
找到等价的关系式:
Math.min(a[x], min(a,x+1))
以a[3]为例
k=min(a,0)
0≠2,min(a[0],min(a,1))
1≠2,min(a,1))=>min(a[1],min(a,2))
2=2,min(a[1],min(a,2))=>return a[2]
package com.qiqi.test2;
import java.util.Scanner;
//递归,求数组a[]中最小值
public class Test3 {
public static int min(int[] a,int x) {
if(x==a.length-1)
return a[x];
else
return Math.min(a[x], min(a,x+1));
}
public static void main(String[] args) {
int i,k,n;
Scanner cin=new Scanner(System.in);
System.out.println("请输入数组中有几个数:");
n=cin.nextI‘’;、nt();
int []a=new int[n];
System.out.println("请输入"+n+"个数:");
for(i=0;i<n;i++) {
a[i]=cin.nextInt();
}
k=min(a,0);
System.out.println("最小值是"+k);
cin.close();
}
}