C语言学习第五天—递归

来源:互联网 发布:淘宝免单网 编辑:程序博客网 时间:2024/05/18 01:05

有下面一个问题求1到n的阶乘。公式

n! = n * (n-1) * (n-2) * ...* 1(n>0) 

我们常用的解决办法是

long factorial(int n){   int i;   long int sum=0, temp=1;   for(i=1;i<=n;i++){   temp*=i;   sum+=temp;}return sum;}
这种解决方法虽然能解决问题,但是和上面公式相比还要有一个比较麻烦的转换关系,能不能直接把公式变成函数?C语言给我们提供了一种直接把数学公式转换成函数的方式,这种方式叫递归

递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

这个问题可以用递归这么解决

函数可以写成 f(n)=f(n-1)*n;

递归边界条件:n ==|| n==1

递归前段 :sum =1

递归后段:sum=i*f(i-1)

代码如下

long factorial(int n){       if(n==1||n==0)   return 1;   else   return n*factorial(n-1);}





0 0