如题所述
C语言中,i的阶乘可以用递归方式来计算,也可以用非递归方式来计算。
递归方式:
double fun(int i){
if(i<2)
return 1; // 0和1的阶乘都是1
else
return i*fun(i-1); // i的阶乘等于i乘以(i-1)的阶乘
}
// 调用函数fun后,得到的就是i的阶乘
非递归方式:
double result=0;int ind, i;
printf("输入i的值:");
scanf("%d", &i);
for(ind=1; ind<=i; ind++) // 1*2*...*i得到i的阶乘
result = result * ind;
// 执行完该程序段后,就可以得到i的阶乘
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-05-16
递归方法
int jieceng(int n)
{
if(n>=1)
{
if(n == 1)
{
return 1;
}
else
{
return n*jieceng(n-1);
}
}
else
{
printf("error");
return 0;
}
}
int jieceng(int n)
{
if(n>=1)
{
if(n == 1)
{
return 1;
}
else
{
return n*jieceng(n-1);
}
}
else
{
printf("error");
return 0;
}
}
第2个回答 2010-04-15
迭代方法:
double jc(int n)
{
double j=1;
if(n<0) return -1;
while (n) j*=n--;
return j;
}
递归方法:
double jc(int n)
{
if (n>1) return n*jc(n-1);
if (n<0) return -1;
else return 1;
}
double jc(int n)
{
double j=1;
if(n<0) return -1;
while (n) j*=n--;
return j;
}
递归方法:
double jc(int n)
{
if (n>1) return n*jc(n-1);
if (n<0) return -1;
else return 1;
}
第3个回答 2010-04-15
递归方法
int jieceng(int n)
{
if(n>=1)
{
if(n == 1)
{
return 1;
}
else
{
return n*jieceng(n-1);
}
}
else
{
printf("error");
return 0;
}
}本回答被网友采纳
int jieceng(int n)
{
if(n>=1)
{
if(n == 1)
{
return 1;
}
else
{
return n*jieceng(n-1);
}
}
else
{
printf("error");
return 0;
}
}本回答被网友采纳