用户必须输入数字n(1;无穷大)。然后程序会这样做:
cos1/sin1 * (cos1+cos2)/(sin1+sin2) *…* (cos1+cos2+...+cosn)/(sin1+sin2+...+sinn )
我的程序只计算cos(i)/sin(i)。我不知道下一步该做什么。我应该写哪种算法?
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
double res;
cout << "Enter n: ";
cin >> n;
for (int i = 1; i < n; i++)
{
res = cos(i) / sin(i);
}
cout << res;
}发布于 2020-10-28 03:38:30
因为您需要在每一步中将两个和相除,所以您需要存储这些和,并将累加乘积与除法的结果相乘。
int main()
{
int n;
cout << "Enter n: ";
cin >> n;
double cos_sum = 0.0;
double sin_sum = 0.0;
double res = 1.0;
for (int i = 1; i <= n; i++)
{
cos_sum += cos(i);
sin_sum += sin(i);
res *= cos_sum / sin_sum;
}
cout << res;
}发布于 2020-10-28 03:38:50
在迭代过程中,基本上有三个量累积。它们是:
C[N] = cos1+cos2+cos3+cos3+ .... cosN
S[N] = sin1+sin2+sin3+sin3+ .... sinN
X[N] = C[1] / S[1] * C[2] / S[2] * ... C[N] / S[N]递归关系是:
C[0] = 0
C[N + 1] = C[N] + cosN+1
S[0] = 0
S[N + 1] = S[N] + sinN+1
X[0] = 1
X[N + 1] = X[N] * C[N+1] / S[N+1]使用这一点,编写循环应该很简单:
#include <iostream>
int main() {
int n;
double X = 1;
double C = 0;
double S = 0;
cout << "Enter n: ";
cin >> n;
for (int i = 1; i < n; i++) {
C += cos(i);
S += sin(i);
X *= C / S;
}
cout << X;
}https://stackoverflow.com/questions/64561519
复制相似问题