C语言问题,菜鸟,求详解

以下程序的运行结果是:
fun(int t[],int n)
{ int i,m;
if(n==1) return t[0];
else
if(n>=2) {m=fun(t,n-1); return m;}
}
main()
{
int a[]={11,4,6,3,8,2,3,5,9,2};
printf(“%d\n”,fun(a,10));
}

结果为: 11
这是个递归调用的程序
运行到最后if(n>=2){m=fun(t,n-1)} 当n=2时n-1=1 在调用fun(int t[],int n)时满足if(n==1)
return t[0] 这时候t数组还是a[]数组 t[0]=a[0]=11
当m=fun(t,n-1)}不满足时 还是去调用函数fun(int t[],int n) 而不运行后面的return m,所以只有一个11
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-09
结果是11
该程序返回的结果为return t[0];
测试程序如下
#include<stdio.h>
int fun(int t[],int n)
{ int m;
if(n==1) return t[0];
else
if(n>=2) {m=fun(t,n-1); return m;}
}
int main()
{
int a[]={11,4,6,3,8,2,3,5,9,2};
//printf("%d\n",fun(a,10));
for(int i=1;i<=10;i++)
printf("%d, ",fun(a,i));
}
输出 11 11 11 11 11 11 11 11 11 11 11
第2个回答  2012-09-09
这个程序怎么了,你想解决什么问题追问

·····
当然就是题目问的问题

追答

在我的机子上结果是11
也就是返回数组的第一个元素

相似回答