首页 > 解决方案 > 我应该使用哪种算法来计算给定的数学序列?

问题描述

用户必须输入一个数字n(1;无穷大)。然后程序会这样做:

cos1/sin1 * (cos1+cos2)/(sin1+sin2) * … * (cos1+cos2+...+cos⁡ n)/(sin1+sin2+...+sin ⁡n )

我试图计算:

#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;
}

但我不知道哪种算法能正确地做到这一点。

标签: c++math

解决方案


由于您需要在每个步骤中将两个总和相除,因此您需要存储这些总和,并将累加乘积与相除的结果相乘。

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;
}

推荐阅读