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

 我来答
辜亭晚示未
2020-02-25 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:1957万
展开全部
n的阶乘,就是从1开始乘到n,即1*2*3*...*(n-1)*n。
即n!=1*2*3*...*(n-1)*n。
而(n-1)!=1*2*3*...*(n-1)。
所以可以得出,n!=(n-1)!
*
n。
由这个概念,可以得出递归求阶乘函数fact的算法:
1
如果传入参数为0或1,返回1;
2
对于任意的n,返回n*fact(n-1)。
代码如下:
int fact(int n)
{
if(n == 0 || n == 1) return 1;
return n*(fact(n-1));
}
雷美媛苍香
2019-09-03 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:890万
展开全部
1、首先打开vc6.0,新建一个vc项目。

2、接下来需要添加头文件。

3、添加main主函数。

4、定义一个用来求阶乘的函数。

5、在main函数定义int类型变量sum。

6、调用fact(),并将返回值赋予sum。

7、使用printf打印sum。

8、运行程序,看看结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
别瑶毓嫣
2019-10-28 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:1120万
展开全部
思路分析:
n!
=
n*(n-1)!

//
n的阶乘可以化为n乘以(n-1)
的阶乘,这就是递归
当n=0或1时,n!
=
1
//
这就是递归终止条件
实现算法程序:
double fun(int n) // 递归函数求n的阶乘
{
if(n==0 || n==1) // 递归终止条件
return 1;
else
return n*fun(n-1); // 进行递归运算
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
多蕊明雀
2019-10-25 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.2万
采纳率:34%
帮助的人:923万
展开全部
没错按道理来说是
不满足
条件
(n>1)
时才执行
return
1;
加上
else
程序看起来更清楚。
可是
因为
满足
条件
(n>1)
时执行的是
return
(n*fun(n-1));
就已经退出函数了
所以
else
就可以省略了,只有
不满足
条件
(n>1)
时才会执行到
return
1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式