若有以下程序 int f(int a[], int n) { if (n > 1) { int t; t=f(a, n-1); return t > a[n-1] ? t : a[n-1]; } else return a[0]; } main()

admin2018-10-16  28

问题 若有以下程序
int f(int a[], int n)
{
if (n > 1)
{
int t; t=f(a, n-1);
return  t > a[n-1] ? t : a[n-1]; }
else return a[0]; }
main()
{
int a[] = {8,2,9,1,3,6,4,7,5};
printf("%d\n", f(a, 9)); }
则程序的输出结果是

选项 A、9
B、1
C、8
D、5

答案A

解析 主函数中调用f(a,9),递归函数的调用过程如下:
f(a,9)?f(a,8)?f(a,7) ?f(a,6) ?f(a,5) ?f(a,4) ?f(a,3) ?f(a,2) ?f(a,1),f(a,1)得到返回值为a[0],值为8,递归过程开始回归,回归过程描述如下:
8>a[1],返回8?8>a[2]不成立,返回a[2]的值为9……因此函数f的主要功能为计算数组中的最大值。主函数中输出最大值为9。
转载请注明原文地址:https://jikaoti.com/ti/6Pa0FFFM
0

最新回复(0)