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

Python013

C语言怎么用递归法求阶乘,第1张

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;

#include<stdio.h>

int main()

{

int n

int y

printf("input a integer number:")

scanf("%d",&n)

y=fac(n)

printf("%d!=%d\n",n,y)

return 0

}

int fac(int n)

{

int f

if(n<0)

printf("n<0,data error!")

else if(n==0||n==1)

f=1

else

f=fac(n-1)*n

return(f)

}

扩展资料:

return用法:

return返回一个数值的意思就是把return&lt表达式&gt后面表达式的值返回给调用他的函数。举个例子:

int sum(int i,int j)

{

return i+j

printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了")

}

main()

{

int a=10,b=11,c

c=sum(a,b)

printf("%d",c)

}

程序的输出为:

21

这个21从何而来呢main函数调用sum(a,b)函数时将a的值赋给i,b的值赋给j,上面说了return i+j会计算i+j的值也就是结果等于21,并将21带回给调用它的函数,即c=sum(a,b)相当于c=21,这个21就是由sum(a,b)中的return反回来的。