int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return z;}main(){printf("%d",f(3));}int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return z;}main(){printf("%d",f(3));}1 2 6 6 我不知道怎么计算出来的 而且我算出来第
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/30 15:41:12
![int f(int x){if(x==0) return 1;z+x*f(x-1);printf(](/uploads/image/z/11822501-29-1.jpg?t=int+f%28int+x%29%7Bif%28x%3D%3D0%29+return+1%3Bz%2Bx%2Af%28x-1%29%3Bprintf%28%22%25d%22%2Cz%29%3Breturn+z%3B%7Dmain%28%29%7Bprintf%28%22%25d%22%2Cf%283%29%29%3B%7Dint+f%28int+x%29%7Bif%28x%3D%3D0%29+return+1%3Bz%2Bx%2Af%28x-1%29%3Bprintf%28%22%25d%22%2Cz%29%3Breturn+z%3B%7Dmain%28%29%7Bprintf%28%22%25d%22%2Cf%283%29%29%3B%7D1+2+6+6+%E6%88%91%E4%B8%8D%E7%9F%A5%E9%81%93%E6%80%8E%E4%B9%88%E8%AE%A1%E7%AE%97%E5%87%BA%E6%9D%A5%E7%9A%84+%E8%80%8C%E4%B8%94%E6%88%91%E7%AE%97%E5%87%BA%E6%9D%A5%E7%AC%AC)
int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return z;}main(){printf("%d",f(3));}int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return z;}main(){printf("%d",f(3));}1 2 6 6 我不知道怎么计算出来的 而且我算出来第
int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return z;}main(){printf("%d",f(3));}
int f(int x)
{
if(x==0) return 1;
z+x*f(x-1);
printf("%d",z);
return z;
}
main()
{
printf("%d",f(3));
}
1 2 6 6
我不知道怎么计算出来的 而且我算出来第一个怎么会是1 不是6么 .T T
题目写错了.是z=x*f(x-1);
int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return z;}main(){printf("%d",f(3));}int f(int x){if(x==0) return 1;z+x*f(x-1);printf("%d",z);return z;}main(){printf("%d",f(3));}1 2 6 6 我不知道怎么计算出来的 而且我算出来第
一、首先说明一下,你有个地方写错了,应该是:z=x*f(x-1);,你把“=”号写成了加号.
二、这道题有四次函数的递归调用:
(1)第一次递归是f(3),得z=3*f(2).函数运行到这里时,进行第二次递归f(2),得z=2*f(1).
同理,函数运行到这里时,进行第三次递归f(1),得z=1*f(0).最后是第四次递归f(0),因为x==0,故return 1,即f(0)=1.到此时,递归函数触底反弹.
(2)所以z=1*f(0)=1,所以print输出z值1,return返回z值1;
同理,z=2*f(1)=2,print输出z值2,return返回z值2;z=3*f(2)=6,print输出z值6,return返回z值6(PS:这个return返回到main函数调用的位置,故,最后还会在main函数里print多一个6,而前面的三个return返回到的递归函数调用的地方).
(3)综上,最后屏幕上输出的结果是1266.