【问题标题】:Calculate 1 + 1!/X + 2!/X^2 + … + N!/X^N计算 1 + 1!/X + 2!/X^2 + … + N!/X^N
【发布时间】:2015-03-28 10:30:50
【问题描述】:

大家好,我尝试用 c# 编写一个计算 1 + 1!/X + 2!/X^2 + ... + N!/X^N 的程序,但它给出了错误的结果,我尝试调试它,但找不到错误谁能帮我解决这个问题?

Console.WriteLine("Calculate 1 + 1!/X + 2!/X^2 + … + N!/X^N");
    Console.Write("N:");
    double n = double.Parse(Console.ReadLine());
    Console.Write("X:");
    double x = double.Parse(Console.ReadLine());
    double result = 1;
    int ifac = 1;
    for (int i = 1; i <= n; i++)
    {
        for (int j = i; j >= 1; j--)
        {
            ifac *= j;
        }
        result += ifac / Math.Pow(x, i);
    }
    Console.WriteLine(result);

【问题讨论】:

  • 您在调试时发现了什么?值在哪一步变得不正确?
  • 你不需要每次都计算 fac。只需通过将前一个与 (i/x) 相乘来重新计算每个和数

标签: c# for-loop calculator


【解决方案1】:

您需要在每个循环中添加ifac = 1;

Console.WriteLine("Calculate 1 + 1!/X + 2!/X^2 + … + N!/X^N");
Console.Write("N:");
double n = double.Parse(Console.ReadLine());
Console.Write("X:");
double x = double.Parse(Console.ReadLine());
double result = 1;
int ifac = 1;
for (int i = 1; i <= n; i++)
{
    ifac = 1; //This line is very important
    for (int j = i; j >= 1; j--)
    {
        ifac *= j;
    }
    result += ifac / Math.Pow(x, i);
}
Console.WriteLine(result);

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2022-01-17
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多