这道函数递归调用的执行顺序是什么?(有例题,请根据0-1-2-__来告诉我)

来源:百度知道 编辑:UC知道 时间:2024/06/09 16:35:01
#include"stdio.h"
long fun(int n) //1
{

if(n>1) //2
return(n*fun(n-1)); //3
else if(n==1) //4
return 1; //5

}

main()
{

int k=10;

printf("%d!=%ld\n",k,fun(k)); //0

}

更改程序如下:
#include"stdio.h"
long fun(int n) { // 1
printf ("1-");
if (n>1) { //2
printf("2-3-");
return (n*fun(n-1)); //3
}
else if(n==1) {//4
printf("2-4-5-");
return 1; //5
}
}

main() {
int k=10;
printf("0-");
printf("\n%d!=%ld\n",k,fun(k)); // 0
getch ();
}
得到结果:
0-1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-1-2-3-1-2-4-5-
10!=3628800
是你要的结果么?

递归很难啊!

#include"stdio.h"
long fun(int n) //1 4 7 10 13 16 19 22 25 28
{
if(n>1) //2 5 8 11 14 17 20 23 26 29
return(n*fun(n-1)); //3 6 9 12 15 18 21 24 27
else if(n==1) //30
return 1; //31 32 33 34 35 36 37 38 39
}

main()
{
int k=10;
printf("%d!=%ld\n",k,fun(k)); //0 40