问题 填空题

以下程序是用递归方法求数组中的最大值及其下标值。请填空。 #define M 10 void findmax(int *a,int n,int i,int *pk) { if(i<n){ if(a[i]>a[ *pk]) 【15】 ; 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:%d\n" ,a[n]); printf(" It’s index is;%d\n" ,n);}

答案

参考答案:*pk=a[i]

解析:[命题目的] 调用函数和初调用函数之间的数据传递。[解题要点] 通过参数传递,findmax函数接收到4个参数,分别是数组a(需要对其中的数据按照题目的要求进行计算)、10(数组a中的元素个数)、0(数组a的起始位置)、指针变量n(对数组a中的元素进行遍历)。我们了解了这些参数的作用后,再对递归调用的函数进行分析,就不难得出结论了。[考点链接] 通过对本例中递归函数的分析掌握递归算法的执行原理。

单项选择题
问答题 简答题