永发信息网

c语言递归求阶乘

答案:4  悬赏:60  手机版
解决时间 2021-02-23 15:52
c语言递归求阶乘
最佳答案
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));
}
全部回答
n>1的时候递归下去 如果等于1直接返回1追问调用函数fun,将10传递给函数,在第一个return中不停调用fun求得10*9*8*7*6*5*4*3*2 然后再将1传递给函数fun(),因为不满足n>1,所以执行return 1 语句,我是想问这里的return 1是返回到第一个return语句中还是主函数main?
第二个就是主函数啊,它用10调用了fun函数,就是求10的阶乘,输出为10!=3628800。
第一个return求的是n>1时的阶乘,这样一层一层地找下去,处理递归并返回结果。第二个return前面省略了else,也就是当不满足n>1这个条件时执行的,是判断递归的边界,返回的是1的阶乘的答案,如果没有这个return,递归就没有边界,一直进行下去,就会造成栈溢出。
PS:我也是刚学,说的可能不是很好,希望对你有帮助!追问调用函数fun,将10传递给函数,在第一个return中不停调用fun求得10*9*8*7*6*5*4*3*2 然后再将1传递给函数fun(),因为不满足n>1,所以执行return 1 语句,我是想问这里的return 1是返回到第一个return语句中还是主函数main?追答是返回到第一个return语句中,因为它已经处理完了fun(1),所以就往上一层fun(2)了。递归的过程是:fun(1)的值回代给fun(2),fun(2)的值回代给fun(3)……直到求出fun(10)=3628800。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列属于有限责任公司优点的是( )。A.设立
出嫁当天梳子断是什么意思
宁城县桥东幼儿园我想知道这个在什么地方
山羊奶皂有没有含碱
电脑桌面的软件图标突然都变成lnk格式了 是怎
长永汽车修理厂这个地址在什么地方,我要处理
轮胎靠近侧面被扎是不是就不能补了
商用天然气开户多少钱
2014年五菱荣光s多少年年检一次?
瑞利阀门集团有限公司西安销售处在哪里啊,我
有谁知道广州地区神州租车门店店长工资待遇和
帮我写两篇读后感.关于神片农本草经的,字数30
衣色迷人这个地址在什么地方,我要处理点事
坛下村地址在什么地方,我要处理点事
2018年青海公务员最终报名人数确定了吗?
推荐资讯
现在有多少人在用freemarker的
oppor9splus安装不了软件
oracle +mybatis 批量删除 会不会内存溢出
哪里有发糕卖?
想买一款豆浆机,除了做豆浆主要还想给孩子做
什么季节喝绿茶
河神 百度云
奥东艺术中心地址在什么地方,想过去办事
哈一工具地址在什么地方,想过去办事
怎么在电脑上打开Windows Anytime Upgrade
奶奶是个特别吝啬的人,特别自私的人,她说话
【抓捕器】防坠器每天由专人检查的项目有:抓
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?