【发布时间】:2019-10-07 14:30:44
【问题描述】:
为什么我们使用return 1 来终止递归函数?是否可以将任何其他值用作默认值,例如 1。
如果我们返回1作为函数的返回值,那么为什么1没有返回给主函数。
#include<stdio.h>
int fact(int n)
{
if(n>=1)
return (n*fact(n-1));
else
return 1;
}
int main()
{
int a,ans;
scanf("%d",&a);
ans=fact(a);
printf("factorial of %d is %d ",a,ans);
return 0;
}
/*
explanation
fact(4);
if(4>=1) 4*fact(3)
if(3>=1) 4*3*fact(2)
if(2>=1) 4*3*2*fact(1)
if(1>=1) 4*3*2*1*fact(0)
if(0>=1) return 1;
*/
【问题讨论】:
-
因为 0!是 1。
-
您的评论就是答案。你打电话给
fact(4),而不是fact(0) -
请仅标记您使用的语言。你的问题比较不清楚。试试
fact(0),用调试器看看1确实返回到main
标签: c recursion return-value factorial