为了账号安全,请及时绑定邮箱和手机立即绑定

题目中的问题

#include<stdio.h>
#include<stdlib.h>
//用递归函数来计算N的阶乘
double factorial(int n)
{
	double result;
	if(n<0)
	{
		printf("输入错误\n"); 
	} 
	else if(n==1 ||n==0)
	{
		result=1;
	} 
	else 
	{
		result=factorial(n-1)*n; //n=5 5-1=4 4*5=20   接下来该怎么算呢 麻烦前辈指点一下! 
	} 
	return result;
} 
	
int main ()
{
	double n ;
	scanf("%lf",&n); 
	printf("%lf的阶乘=%g\n",n,factorial(n)); 
	printf("%lf的阶乘=%lf\n",n,factorial(n)); 
	return 0;
}


正在回答

2 回答

当n=5时由主函数一直调用它本身  结果就是result=factorial(4)*5  此时再次调用了factorial这个函数  结果返回result=factorial(3)*4*5  后面继续调用   结果就是1*2*3*4*5

1 回复 有任何疑惑可以回复我~
#1

dire 提问者

非常感谢!
2015-11-11 回复 有任何疑惑可以回复我~

 result=factorial(n-1)*n这里就是你又回到factorial这个函数啊

0 回复 有任何疑惑可以回复我~
#1

dire 提问者

thanks!
2015-11-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926026    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

题目中的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信