十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
int fac(int n)
10年积累的成都网站设计、成都做网站、外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有沁县免费网站建设让你可以放心的选择与我们合作。
{
long fact;
if (n == 1)
fact = 1;
else //加上这个
fact = fac(n-1)*n;
return fact;
}
由于对于任意的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语言实现 )
比较简单的尾递归实现:
#includestdio.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(n1)
return n*digui(n-1); //调用递归,让n与n-1相乘,直到n1时
return 1; //n1时,返回1,实现 n*(n-1)*(n-2)*……*3*2*1
}
int func(int n)
{
int i = 1;
if(n = 1) return 1;
return n * func(n-1);
}
int main ()
{
int res = func(5);
printf("result: %d\n", res);
return 0;
}