A-A+
以下程序是用递归方法求数组中的最大值及其下标值。请填空。 define M 10 void
问题详情
以下程序是用递归方法求数组中的最大值及其下标值。请填空。 define M 10 void findmax(int *a,int n,int i,int *pk) { if(i<n) { if(a[i]>a[ *pk])【 】; findmax(a,n,i+1,&(*pk));}} main() { int a[M],j,n=0; printf("nEnter%d data;n" ,M); for(i=0;i<M;i++)scanf("%d" ,a+i); findmax(a,M,0,&n); printf(" The maxinum is:%dn" ,a[n]); printf(" Its index is;%dn" ,n);}
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:*pk=a[i]
通过参数传递,findmax函数接收到4个参数,分别是数组a(需要对其中的数据按照题目的要求进行计算)、10(数组a中的元素个数)、0(数组a的起始位置)、指针变量n(对数组a中的元素进行遍历)。我们了解了这些参数的作用后,再对递归调用的函数进行分析,就不难得出结论了。注意:通过对本例中递归函数的分析掌握递归算法的执行原理。