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

#include<stdio.h>longfun(intn){if(n>1)return(n*fun(n-1));return1;/*我的疑问在这里,难道不应该是else... #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));
}
展开
 我来答
刺友互
高粉答主

2019-09-30 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:64.9万
展开全部

1、首先打开vc6.0,新建一个vc项目。

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

3、添加main主函数。

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

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

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

7、使用printf打印sum。

8、运行程序,看看结果。

匿名用户
推荐于2017-09-16
展开全部
没错按道理来说是 不满足 条件 (n>1) 时才执行 return 1;
加上 else 程序看起来更清楚。

可是 因为 满足 条件 (n>1) 时执行的是
return (n*fun(n-1));
就已经退出函数了

所以 else 就可以省略了,只有 不满足 条件 (n>1) 时才会执行到 return 1;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天云小店
推荐于2017-09-12 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:752万
展开全部

思路分析:

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);   // 进行递归运算
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式