c语言编程 输入m,n,求m,n之间的阶乘和m!+(m+1)!+...+n! 要先判断m,n的大小

编写子函数,主调和被调函数的参数以值传递的方式完成

// 此代码编译成功, 运行也正确.

int GetFactorial( int i ) //得到 m!
{
if( i == 1 ){
return i;
}
return i * GetFactorial(i-1);
}

int GetSum( int min, int max) // 得到 m! + (m+1)! + (m+2)!+ .... n!
{
if( min == max ){
return GetFactorial( min );;
}
int sum = GetFactorial( min );
printf( "min = %d, max = %d, sum = [%d] ", min, max, sum );
return sum + GetSum( min +1, max );
}

int main(int argc, char **argv )
{
int m = 0; int n = 0;
int FactorialSum = 0;
printf(" input :m\n" );
scanf("%d", &m);
getchar();
printf(" input :n\n" );
scanf("%d", &n);
getchar();
if( m <= 0 || n <= 0 ){
printf(" error, m = %d, n = %d", m, n );
return -1;
}

if( m > n ){ // exchage; // 交换 m 为最小的.
m=m^n;
n=m^n;
m=m^n;
}
FactorialSum = GetSum (m, n);
printf(" FactorialSum = %d", FactorialSum );
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-17
#include"iostream"
#include"math.h"
using namespace std;
int N(int x) // 求阶乘
{
long int i;
for(i=x-1;i>=1;i--)
x=x*i;
return x;
}
int main()
{

long int t,n,m;
long int l,X=0;
int N(int);
cout<<"shuru m,n:"<<endl;
cin>>m;
cin>>n;
if(m>n) //交换 m ,n
{
t=n;n=m;m=t;
}
for(l=m;l<=n;l++)
{
X=X+N(l);
}
cout<<X<<endl;
return 0;
}
第2个回答  2012-03-17
嗯,不好意思

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网