问题 填空题

以下程序是用递归方法求数组中的最大值及其下标值。请填空。
#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中的元素进行遍历)。我们了解了这些参数的作用后,再对递归调用的函数进行分析,就不难得出结论了。
[考点链接] 通过对本例中递归函数的分析掌握递归算法的执行原理。

问答题 简答题
单项选择题