写了一个程序来计算和显示前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++;
}
}
答案 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;