c语言递归
用递归算法计算n!#include "stdio.h"
long fact(int n)
{ long f;
if(n==1)f=1;
else f=n*fact(n-1); /*此处的fact(n-1)有点不太懂*/
returnf;
}
voidmain()
{ long y;int n;
scanf("%d",&n);
y=fact(n);
printf("%d!=%d\n",n,y);
}
此处fact(n-1)怎么个递归法,逻辑有点乱,求助!!!! {:10_247:} 本帖最后由 jackz007 于 2021-12-15 21:58 编辑
#include <stdio.h>
unsigned long long fact(int n)
{
return (n > 1) ? n * fact(n - 1) : 1LL ;
}
int main(void)
{
unsigned long long y ;
int n ;
scanf("%d" , & n) ;
printf("%d! = %I64u\n" , n , fact(n));
}
以计算 fact(5) 为例,分析递归过程
fact(5) = 5 * fact(4)
fact(4) = 4 * fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1
fact(5) = 5 * fact(4) = 5 * 4 * fact(3) = 5 * 4 * 3 * fact(2) = 5 * 4 * 3 * 2 * fact(1) = 5 * 4 * 3 * 2 * 1 jackz007 发表于 2021-12-15 21:51
写的有点深奥,我初学啊,好多的没怎么看懂,我只看出来是简写的{:5_99:} jackz007 发表于 2021-12-15 21:51
以计算 fact(5) 为例,分析递归过程
fact(5) = 5 * fact(4) = 5 * 4 * fact(3) = 5 * 4 * 3 * ...
后面这个一下子看懂了{:10_254:}感谢感谢 {:5_95:} {:10_256:} {:10_256:} {:10_279:} 这个小甲鱼之前视频里讲过的,{:5_106:} {:10_297:} {:10_254:} {:10_256:} {:10_327:}
页:
[1]