c语言用 递归调用函数 的方法求n的阶乘,要具体解释一下,具体到每一行。

是输入一个数,求它的阶乘。

你好,这是我为你写的程序,希望对你有用。
程序和注释如下:
#include<iostream>
using namespace std;
long jisuan(int n)//递归函数
{
long j;
if(n==1) j=1;
else j=n*jisuan(n-1);//递归调用函数"long jisuan()"
return j;//返回结果
}
void main()
{long jisuan(int n);//在主函数中声明函数
int x;
long y;
cout<<"请输入你要求阶乘的数"<<endl;
cin>>x;
y=jisuan(x);//调用函数
cout<<y<<endl;//输出函数
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-31
unsigned int Jiechen(unsigned int n)
{
if(n==0) return 1; /* 0 的阶乘等于 1, 直接返回 1 */
else return n * jiechen(n-1); /* 否则 n! = n * (n-1)! 此处是递归调用函数 Jiechen() */
}本回答被网友采纳
第2个回答  2011-08-01
#include<stdio.h>
int fun(int n)
{
if(n==1||n==0) return 1; //0!=1,1!=1。
else return n*fun(n-1); //n!=n*(n-1)!。
}

int main()
{
int n;
scanf("%d",&n);
printf("%d\n",fun(n)); //输出n的阶乘。
return 0;
}
第3个回答  2012-03-03
#include<stdio.h>
#include<stdlib.h>
long rfact(int n)
{
if(n<0)
{
printf("Negative argument to fact!\n");
exit(-1);
}
else if(n<=1)
return (1);
else
return(n*rfact(n-1));
}
int main(void)
{int x,s ;
printf("enter a number:");
scanf("%d",&x);
s=long rfact(x);
printf("answer is:%d",s);
return 0;
}
第4个回答  2012-12-10
#include<stdio.h>
int func(int n);
void main()
{
int n,t;
printf("请输入阶乘n的值:");
scanf("%d!",&n);
t=func(n);
printf("%d!=%d\n",n,t);
}
int func(int n)
{
int s;
if(n<0){
printf("n<0,输入数据错误!");
} else if(n==1||n==0){
s=1;
}else{
s=n*func(n-1);
}
return(s);
}
相似回答