我正在嘗試制作一個程式,該程式將輸入一個極限值,然后輸出斐波那契數列,直到達到極限。這是我到目前為止所得到的:
int n1 = 0, n2 = 1, n3 = 0, i, ToInfinity = 3, limit, terms = 0;
List<int> fibonaccisequence = new List<int>();
Console.Write("Enter the limiting value: ");
limit = Convert.ToInt32(Console.ReadLine());
fibonaccisequence.Add(n1);
fibonaccisequence.Add(n2);
do
{
for (i = 2; i < ToInfinity; i )
{
n3 = n1 n2;
fibonaccisequence.Add(n3);
n1 = n2;
n2 = n3;
ToInfinity = 1;
terms = 1;
}
}
while (n3 <= limit);
Console.WriteLine(fibonaccisequence);
Console.WriteLine("There are {0} terms up to {1].", terms, limit);
但是每當我執行代碼時,它都會說“陣列維度超出支持的范圍”,這顯然意味著它會永遠持續下去,而不是在限制處停止。我可能沒有看到明顯的東西,但是有人可以建議為什么這不起作用。
uj5u.com熱心網友回復:
讓我們首先看看您的代碼中發生了什么
for (i = 2; i < ToInfinity; i )
{
...
}
只要 的值i小于 ,您就在運行回圈ToInfinity。并且您在每次迭代中都將i和的值增加了。所以基本上這個回圈永遠不會停止。ToInfinity1
讓我們看看我們如何才能達到您的目標
您試圖找到斐波那契數列,直到達到極限。
所以我建議你先使用while回圈來嘗試它(假設你是新手)。
讓我們看看如何使用 while 回圈來做到這一點。
while(n1 n2 <= limit) // as n3 = will be n1 n2
{
n3 = n1 n2;
fibonaccisequence.Add(n3);
n1 = n2;
n2 = n3;
terms = 1;
}
注意:您需要terms使用2. 因為您已經采用了2序列 ( n1, n2)。
現在我建議你先學習更多關于do while回圈的知識。然后嘗試使用它來實作上述邏輯。
很少有資源可以了解有關回圈的更多資訊
- C# 回圈
- C# while 和 do...while 回圈
- C# - Do...While 回圈
uj5u.com熱心網友回復:
我猜 ToInfinity 和 i 變數都以相同的量增加,所以基本上 for 回圈永遠不會停止。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/333939.html
標籤:C#
