int f(int x) { if(x==1) return 1; else return x*f(x-1); } void...
发布网友
发布时间:2024-09-29 03:05
我来回答
共2个回答
热心网友
时间:2024-10-07 22:17
一、首先说明一下,你有个地方写错了,应该是: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。
热心网友
时间:2024-10-07 22:18
f(3)=3*f(2)
=3*2*f(1)
=3*2*1
=6