从计算罪(x)得到一个奇怪的输出
问题描述:
我想创建一个程序,可以计算sin(x)
给出x
和值n
。从计算罪(x)得到一个奇怪的输出
我知道罪可以计算为:
x - x3/3! + x5/5! - x7/7! + x9/9!...
但产量使我有同样数量的每一次:-2147483648
。
这里是我的代码:
#include <iostream>
#include <cmath>
using namespace std;
int factorial(int);
int main() {
int ans = 0;
double x = 0;
int n = 0;
cout << "Enter x value: ";
cin >> x;
x = x * (3.14159/180);
cout << endl;
cout << "Enter n value: ";
cin >> n;
ans = pow(x, 1 + (2 * n))/factorial(1 + (2 * n));
cout << ans << endl;
return 0;
}
int factorial(int a) {
int facts = 0;
for (int i = 0; i <= a; i++) {
facts *= i;
}
return facts;
}
答
facts
在你的函数factorial
初始化为0,所以它总是返回0。它初始化为1。同去与你的循环开始为0,则乘以facts
i=0
。尝试:
int factorial(int a) {
int facts = 1;
for (int i = 2; i <= a; i++) {
facts *= i;
}
return facts;
}
第一次看'factorial()'告诉我它总是会返回'0',因为'int facts = 0;'应该是'int facts = 1;'。然后'main()'运行到一个零除...... – VCSEL
此外'factorial()'中的循环应该以'for(int i = 2; ......'开始,出于同样的原因 – VCSEL
也,有因式返回一倍,并且宣布事实是双重的,这将显着扩大产生可行因子的“a”的范围,留给OP的练习以说明在因子()失败之前“a”有多大。 – doug