由于对于任意的n,
n! = (n-1)! * n
即令f(n) = n!,存在公式
f(n) = f(n-1) * n
int fac(int n){
if(n == 0 || n == 1) return 1
return fac(n-1)*n
}
首先明确题目要求:递归函数,求n!
递归函数的含义:
编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。
n!表示阶乘函数,即1*2*3*……*n
下面给出代码:(C语言实现 )
比较简单的尾递归实现:
#include<stdio.h>long digui(int n) //递归函数声明
int main()
{
int n
scanf("%d",&n)
printf("the result is %ld",digui(n)) //打印出递归值
return 0
}
long digui(int n) //递归函数部分
{
if(n>1)
return n*digui(n-1) //调用递归,让n与n-1相乘,直到n<1时
return 1 //n<1时,返回1,实现 n*(n-1)*(n-2)*……*3*2*1
}