【问题标题】:For loop with a mathemtical expression involved [closed]涉及数学表达式的for循环[关闭]
【发布时间】:2019-06-24 09:51:44
【问题描述】:

我正在尝试利用 c# 中的 Math.Cos() 函数来打印从 0 到 2pi 的一系列值,增加 0.1pi,因此迭代 20 次。问题是我无法在 for 循环执行时更改 x 值。

    public void Cos()
    {
        double x = 0;
        double a = Math.PI * x;
        double b = Math.Cos(a);

        for (int i = 0; i < 21; i++)
        {

            Console.WriteLine("Cos({0})pi = {1}", x, b);
            x += .1;

        }
    }

当我将结果打印到控制台时,它只记住 x = 0 时的 cos 值。所以对于 Cos(.1)pi、Cos(.2)pi,我只得到 1、20 次结果,等等……

【问题讨论】:

  • it only remembers the value of cos at x = 0 因为你在b初始化之后就再也不会计算了。
  • ab 的定义放入循环中。需要为 x 的每个新值重新计算它们。
  • 更一般地说,“双 b = Math.Cos(a);”不是说“当我问b是什么时,计算a的余弦”,它的意思是“计算a的余弦现在,当我问b是什么时,告诉我你计算的数字”。
  • 阅读前面带有“立即”一词的每个陈述。所以“double x = a + b + c”意味着“立即将 a + b + c 的值的两倍存储到变量 x 中”。显然,您是在最上面做的,但在您“立即将值添加到 x 0.1”的 x += .1 行之后再也不会这样做了。您必须重新计算 a 和 b 才能获得您想要的值。
  • 我明白你在说什么。谢谢。

标签: c# for-loop math-functions


【解决方案1】:

我正在尝试利用 c# 中的 Math.Cos() 函数来打印从 0 到 2PI 增加 .1PI 的一系列值

这听起来像是for 循环的工作,我们从0 的值开始,每次迭代递增.1 * PI,直到达到2 * PI

由于for 循环具有初始化部分、条件部分和递增部分,因此它是完美的构造。不需要从 0 增加到 20 的额外变量 - 我们可以使用 for 循环来执行 x 的递增和我们测试退出条件!

public static void Cos()
{
    for (double x = 0; x <= Math.PI * 2; x += Math.PI * .1)
    {
        Console.WriteLine("Cos({0})PI = {1}", x, Math.Cos(x));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2019-05-31
    • 2022-12-09
    • 2021-06-24
    • 1970-01-01
    相关资源
    最近更新 更多