首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用循环"for“找到复数加数的乘积?

如何使用循环"for“找到复数加数的乘积?
EN

Stack Overflow用户
提问于 2020-10-28 03:22:07
回答 2查看 44关注 0票数 0

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

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

我的程序只计算cos(i)/sin(i)。我不知道下一步该做什么。我应该写哪种算法?

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

发布于 2020-10-28 03:38:30

因为您需要在每一步中将两个和相除,所以您需要存储这些和,并将累加乘积与除法的结果相乘。

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2020-10-28 03:38:50

在迭代过程中,基本上有三个量累积。它们是:

代码语言:javascript
复制
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]

递归关系是:

代码语言:javascript
复制
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]

使用这一点,编写循环应该很简单:

代码语言:javascript
复制
#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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64561519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档