c语言函数的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 07:54:27
fun (int t[],int n)
{
int i,m;
if(n==1) return t[0];
else
if(n>=2)
{
m=fun(t,n-1);
returnm;

}
}
main()
{
int a[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
}
能帮我解释下这个函数是怎么定义以及调用的!!!

这是一个函数的递归调用

如果n >=2 就递归

如果n == 1就返回数组的第一个元素

所以不管怎么调
最后返回的总是数组的第一个元素

调用fun的次数/n的值/m的值/返回的结果
01 10 .. .. 进入下一个fun(a, 9)
02 09 .. .. 进入下一个fun(a, 8)
03 08 .. .. 进入下一个fun(a, 7)
04 07 .. .. 进入下一个fun(a, 6)
05 06 .. .. 进入下一个fun(a, 5)
06 05 .. .. 进入下一个fun(a, 4)
07 04 .. .. 进入下一个fun(a, 3)
08 03 .. .. 进入下一个fun(a, 2)
09 02 .. .. 进入下一个fun(a, 1) n=1时,返回a[0]
10 01 11 11

从main开始,首先初始化a[]然后打印(显示),此时调用函数fun,在fun中跟据数据可能有自调用,最后反回结果,然后显示