C语言怎么用递归法求阶乘?

#include <stdio.h>
long fun(int  n)
{
if (n>1)
 return (n*fun(n-1));
return 1;/*我的疑问在这里,难道不应该是else return 1吗?根据答案提示这里的1可以换成1L,是什么道理?*/
}
main()
{
printf("10!=%ld\n", fun(10));
}

GCT1015
浏览 1961回答 1
1回答

慕桂英546537

思路分析:n! = n*(n-1)! &nbsp; // n的阶乘可以化为n乘以(n-1) 的阶乘,这就是递归当n=0或1时,n! = 1 &nbsp;// 这就是递归终止条件实现算法程序:double&nbsp;fun(int&nbsp;n)&nbsp;&nbsp;&nbsp;//&nbsp;递归函数求n的阶乘{&nbsp;&nbsp;&nbsp;&nbsp;if(n==0&nbsp;||&nbsp;n==1)&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;递归终止条件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;n*fun(n-1);&nbsp;&nbsp;&nbsp;//&nbsp;进行递归运算}
打开App,查看更多内容
随时随地看视频慕课网APP