显示斐波纳契数列

时间:2014-08-31 19:47:47

标签: c#

写了一个程序来计算和显示前20个斐波纳契数,序列如下:

1,1,2,3,5,8,13 ......(每个数字是前两个数字的总和)

问题在于显示的数字是从2开始,序列的第一个和第二个数字没有显示,有人可以告诉我需要做些什么来纠正这个问题吗?

代码:

        private void button1_Click(object sender, EventArgs e)
    {
        int previousNumber = 1;
        int currentNumber = 1;
        int nextNumber = 1;

        while (currentNumber <= 11000)
        {
            nextNumber = previousNumber + currentNumber;
            previousNumber = currentNumber;
            currentNumber = nextNumber;
            textBox1.AppendText(Convert.ToString(nextNumber) + " ");
                nextNumber++;

        }
    }

4 个答案:

答案 0 :(得分:0)

我建议仔细查看逻辑并预测计算机在每一步都会做什么。由于bug会影响第一个输出,因此您不必查看很多语句来解决问题。这是程序员的基本技能,所以非常值得花时间,特别是因为这听起来像是家庭作业。

答案 1 :(得分:0)

最初,您需要在下一个数字计算之前显示当前数字两次。您还需要在下一个数字计算之前移动数字显示。下一个号码也应该是前一个号码+ currentNumber。我已经对下面的代码进行了更改,应该可以正常工作。

private void button1_Click(object sender, EventArgs e)
{
    int previousNumber = 1;
    int currentNumber = 1;
    int nextNumber = 1;

    textBox1.AppendText(Convert.ToString(currentNumber) + " ");
    while (currentNumber <= 11000)
    {
        textBox1.AppendText(Convert.ToString(currentNumber) + " ");
        nextNumber = previousNumber + currentNumber;
        previousNumber = currentNumber;
        currentNumber = nextNumber;

            nextNumber = previousnNumber + currentNumber;

    }
}

答案 2 :(得分:0)

由于Fibonacci中的前两位数是种子值(1和1或0和1),您应首先打印它们,然后计算下一个值。

我会简化代码。您可以在https://dotnetfiddle.net/3cV96L

进行测试
int initialSeed = 1;
int currentNumber = 1;

//Write seed values
Console.Write("{0} {1} ", initialSeed, currentNumber);

while (currentNumber <= 11000)
{
    currentNumber += currentNumber;
    Console.Write(currentNumber + " ");
}

答案 3 :(得分:0)

只需更改int currentNumber = 0;

即可