
请教大家一个问题c语言中递归的解释,下面是程序段,主要不理解这个程序段循环多少次或者说调用几次结束
intFAC(intn){return((n>0)?(FAC(n-1)+n):0);}printf("%d\n",FAC(20));...
int FAC(int n)
{
return ((n>0) ? (FAC(n-1)+n) : 0);
}
printf("%d \n",FAC(20)); 展开
{
return ((n>0) ? (FAC(n-1)+n) : 0);
}
printf("%d \n",FAC(20)); 展开
3个回答
展开全部
一共执行21次,分别是20~0,即0+1+2...+20之和.
更多追问追答
追问
有人说20次,有人说21次
追答
FAC(0)~FAC(20),你说多少次?
展开全部
到n=0时结束递归调用
FAC(0) = 0
FAC(1) = 1 + FAC(0) = 1 + 0
FAC(2) = 2 + FAC(1) = 2 + 1 + 0
...
FAC(20) = 20 + FAC(19) = ... = 20 + 19 + 18 + ... + 1 + 0
FAC(0) = 0
FAC(1) = 1 + FAC(0) = 1 + 0
FAC(2) = 2 + FAC(1) = 2 + 1 + 0
...
FAC(20) = 20 + FAC(19) = ... = 20 + 19 + 18 + ... + 1 + 0
追问
谢谢!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每次n减1 知道为0 一共调用20次
结果运行求20+19+’‘’+1 =
结果运行求20+19+’‘’+1 =
更多追问追答
追问
想了想,懂了,,谢谢!!
追答
不用。。呵呵 懂了就好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询