求这个函数在计算机中每一步的执行过程!!
#include<stdio.h>intf(intn);intmain(void){printf("%d\n",f(5));}intf(intn){if(1==n)ret...
#include<stdio.h>
int f(int n);
int main(void)
{
printf("%d\n",f(5));
}
int f(int n)
{
if(1==n)
return 1;
else
return f(n-1)*n;
} 展开
int f(int n);
int main(void)
{
printf("%d\n",f(5));
}
int f(int n)
{
if(1==n)
return 1;
else
return f(n-1)*n;
} 展开
1个回答
展开全部
整个程序执行过程如下:
1)从mian()函数开始,到输出语句中printf处
2)此时需要调用f(int n)函数来求f(5).
3)求f(5)过程如下:
①n=5,f(int n)函数由于n≠1,执行else分支,返回值为f(5-1)*5,即f(5)=f(5-1)*5;
②f(5)=f(5-1)*5中,f(5-1)实际也就是f(4),还是需要调用f(int n)函数,此时n=4,调用f(int n)
③n=4,f(int n)函数由于n≠1,执行else分支,返回值为f(4-1)*4,即f(4)=f(4-1)*4
④同②③一样,求f(3),f(2)
⑤当求f(1)时,n=1,执行if(1==n) return 1;分支,即f(1)=1
则整个f(5)=f(4)*5=f(3)*4*5=f(2)*3*4*5=f(1)*2*3*4*5=1*2*3*4*5
此时递归调用完成。
4)将1*2*3*4*5的乘积赋值给输出函数对应的%d。
5)mian函数返回个整数(0/1)
1)从mian()函数开始,到输出语句中printf处
2)此时需要调用f(int n)函数来求f(5).
3)求f(5)过程如下:
①n=5,f(int n)函数由于n≠1,执行else分支,返回值为f(5-1)*5,即f(5)=f(5-1)*5;
②f(5)=f(5-1)*5中,f(5-1)实际也就是f(4),还是需要调用f(int n)函数,此时n=4,调用f(int n)
③n=4,f(int n)函数由于n≠1,执行else分支,返回值为f(4-1)*4,即f(4)=f(4-1)*4
④同②③一样,求f(3),f(2)
⑤当求f(1)时,n=1,执行if(1==n) return 1;分支,即f(1)=1
则整个f(5)=f(4)*5=f(3)*4*5=f(2)*3*4*5=f(1)*2*3*4*5=1*2*3*4*5
此时递归调用完成。
4)将1*2*3*4*5的乘积赋值给输出函数对应的%d。
5)mian函数返回个整数(0/1)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询