首页 > 解决方案 > 如何编写程序来计算这个方程

问题描述

您好,我是 C++ 的初学者,我需要编写一个程序来计算这个方程。有谁能够帮我?AM从键盘读取

方程:

图片

我试过这段代码:

int M = 1;
int A;
cin >> A;
cin >> M;
float sum;
for(int i = 1; i<=M; k++){
    k = k*i;
    float A1 = pow(A, i);
    sum += A1 / k;
}

标签: c++

解决方案


除了上面已经列出的 3 个明显问题(无限循环、丢失初始化、丢失函数声明)之外,我们可以通过迭代计算 A^k 来优化性能,而不是在每个步骤中重新计算:

#include <stdio.h>

auto combinations(float A, unsigned short M) {
    float ret_val = 1.0f;                  // For k=0: A^0 / 0! = 1
    float num = A;  
    float denum = 1;
    for (int k = 1; k <= M; ) {
        ret_val += num / denum;
        num *= A;
        denum *= ++k;
    }
    return ret_val;
}

int main()
{
    printf("Value for A=2, M=10: %f\n\r", combinations(2.0f, 10));
    return 0;
}


推荐阅读