请帮我分析一下,这段程序是怎么运行的?值的变化是怎么样的?

#include<stdio.h>
void main()
{
int diecheng(int num);
printf("%d",diecheng(5));
}
int diecheng(int num)
{
int result;
if(num==0)
result=1;
else
result=num*diecheng(num-1);
return result;
}

繁花如伊
浏览 104回答 2
2回答

回首忆惘然

从主函数开始运行,遇到调用函数时,直接跳到下面的函数定义中运行,然后把返回值带到主函数,继续运行主函数下面的部分。#include<stdio.h>void main(){int diecheng(int num); \\声明函数printf("%d",diecheng(5)); \\diecheng(5)即为调用此函数,实参为5}int diecheng(int num) \\定义函数{int result;&nbsp;if(num==0)result=1;elseresult=num*diecheng(num-1);\\因为实参为5,所以运行else下面的,result=5*(5-1)即为20return result; \\返回result的值(即20)到主函数的printf语句中,从而打印出来}

DIEA

进入主函数首先声明diecheng函数然后打印diecheng(5),进入diecheng函数,num=5,所以result5=5*diecheng(4),进入diecheng(4)result4=4*diecheng(3)进入diecheng(3) result2=3*diecheng(2) 进入diecheng(2) result2=2*diecheng(1),进入diecheng(1) result1=1*diecheng(0),diecheng(0)=1,result1=1;result2=2;result3=6;result4=24;result5=120,所以结果是120
打开App,查看更多内容
随时随地看视频慕课网APP