用C++编程求1+1⼀2!+1⼀3!+.....+1⼀12!,为什么无结果呢?求改正。

2024-12-20 16:02:02
推荐回答(5个)
回答1:

int mat(int n)函数中
cin>>a; 表示你要输入数据才能继续执行。
况且你的main函数中,b的类型用的是int,1/(mat(a))的值为0,执行后的结果应该为1。建议换成double型或者float型,这样就可以输出小数部分啦。
补充程序吧:
#include
using namespace std;
int mat(int);
int f(int);
int main()
{
//int mat(int);
int a = 0;
double num1 = 0;
double num2 = 0;
double b = 0;
for(a=1;a<=12;a++)
{
num1 = mat(a);
num2 = 1/num1;
b = b + num2;
}
cout< //cin>>a;
return 0;
}
int mat(int n)
{
//int f(int);
int y,a;
y=f(n);
//cin>>a;
return y;
}

//阶乘
int f(int n)
{
//if (n==1)
// return 1;
//else
// return (n*n+f(n-1));
int iNum = 0;
int sum = 0;
sum = 1;
for (iNum=1; iNum<=n;iNum++)
{
sum = sum * iNum;
}
return sum;
}

回答2:

不能用递归, 12!很大会溢出,下面的更简单!
#include
using namespace std;
int main()
{
double a = 1, sum = 0;
for(int i = 1; i <= 12; i++)
{
sum += a;
a = a / i;
}
cout << sum << endl;
return 0;
}

回答3:

main函数里面1/(mat(a));会变成0;因为int形的1/2=0;应该改成double形的或float形的

回答4:

#include
using namespace std;
int mat(int n);
int f(int n);
int main()
{
int a;
float b=0.0;//定义成浮点数的
for(a=1;a<=12;a++)
{
b=b+1.0/f(a);
}
cout< return 0;
}

int f(int n)
{
if (n==1)
return 1;
else
return (n*f(n-1));
}

回答5:

#include using namespace std; int main() { double a = 1, sum = 0; for(int i = 1; i <= 12; i++) { a = 1.0 / i; sum += a; } cout << sum << endl; return 0; }