#include<stdio.h>
int amax(int a[], int n);
int main() {
int a[10] = { 3,5,10,6,8,7,1,2,4,9 },i,max;
max = amax(a, 10);
for (i = 0; i < 10; i++) {
printf("%4d", a[i]);
}
printf("\nmax=%d", max);
}
int amax(int a[], int n) {
int max;
if (n == 1) {//边界条件,当n==1时数组只有a[0],最大值自然是它
return a[0];
}
max = amax(a, n - 1);//不断递归,直到n==1停止递归,此时max==a[0],然后一层层返回,执行下面代码
if (max > a[n - 1]) {
return max;
}
else {
return a[n - 1];
}
}
amax(a,n) max(max,a[n-1])
amax(a,n-1) max(max,a[n-2])
amax(a,n-2) max(max,a[n-3])
…
amax(a,2) max( a[0],a[1])
amax(a,1) max=a[0]