思路:递归求阶乘函数,如果输入的参数等于1则返回1,否则返回n乘以该函数下次递归.
参考代码:
#includestdio.h
int?fun(int?n)
{
if(n==1||n==0)?return?1;//如果参数是0或者1返回1
return?n*fun(n-1);//否则返回n和下次递归的积
}
int?main()
int?n;
scanf("%d",n);
printf("%d\n",fun(n));
return?0;
/*
*/
分析下程序,阶乘可以用递归做,也可以用循环做,这里就放上这两种代码了.
一.递归:
#include stdio.h
int f(int t)
if (t==1)
return 1;
else
return t*f(t-1);
int main()
printf("%d\n",f(10));
return 0;
程序分析:定义一个f函数,利用递归的特性,进行运算
得出结果:
二.循环:
int t1=1;
for(int i=10;i=1;i--)
t1 = t1*i;
printf("%d", t1);
程序分析:直接用一个for循环进行自减即可完成,定义t1用于存储结果
所以可以得出,n!=(n-1)!
*
n.
由这个概念,可以得出递归求阶乘函数fact的算法:
如果传入参数为0或1,返回1;
对于任意的n,返回n*fact(n-1).
代码如下:
int fact(int n)
if(n == 0 || n == 1) return 1;
return n*(fact(n-1));
举例:用递归方法求n;
int n;
int y;
printf("input a integer number:");
y=fac(n);
printf("%d!=%d\n",n,y);
int fac(int n)
int f;
if(n0)
printf("n0,data error!");
else if(n==0||n==1)
f=1;
f=fac(n-1)*n;
return(f);
扩展资料:
return用法:
return返回一个数值的意思就是把returnlt;表达式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);
程序的输出为:
void main()
long int jies(int a);
long int k,l,m;
printf("输入要求阶乘的三个数,用空格隔开\n");
scanf("%d%d%d",k,l,m);
long int sum;
sum=jies(k)+jies(l)+jies(m);
printf("sum=%d\n",sum);
long int jies(int a)
long int j;
if(a0)
printf("输入有误");
else if(a==1||a==0)
j=a*jies(a-1);//递归算法
return j;
以上就是土嘎嘎小编为大家整理的阶乘相加的c语言递归函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!