2014-10-08 69 views
0

我想在Swift中使用while循環來構建基本的斐波那契數列。Swift - 儘管循環不起作用

我在while循環中使用的條件是:var next < = var maxNum,其中next是包含要附加數組中最新元素的整數,maxNum是表示最大元素的整數包含在數組中(爲了測試while循環,我將它硬編碼爲10)。

運行在遊樂場下面的代碼時獲取以下錯誤: 「執行被中斷,原因:EXC_BAD_INSTRUCTION(代碼= EXC_I386_INVOP,子碼=爲0x0)」

while循環運行90次這種情況發生之前,讓我知道我的狀況正在崩潰... var幾次循環後var應該大於10 ....不知道發生了什麼事。

import UIKit 

var myArray = [0,1] 

var maxNum = 10 
var next = 0 

while next <= maxNum{ 
    var last = myArray.last! 
    var lastLast = myArray[myArray.count-2] 
    var next = last + lastLast 
    myArray.append(next) 
} 


println(myArray) 
println(myArray.last!) 
+2

您是否已經完成了所有代碼?或者你是否從while循環輸出了值?你做了什麼來嘗試調試呢? – Qix 2014-10-08 17:25:54

+0

不知道swift那麼好,但是你不是在循環中聲明_new_'next'變量嗎?這會導致外'next'保持爲0. – 2014-10-08 17:28:33

+0

謝謝,你說得對。 – 2014-10-12 02:16:00

回答

3

的問題是,你重新聲明next你的循環體內:

var next = last + lastLast 

應該

next = last + lastLast 

一旦你做出這種修正,你的代碼運行正常,生產結果如下:

[0, 1, 1, 2, 3, 5, 8, 13] 
13 

Demo.

+0

謝謝,解決了! – 2014-10-12 02:15:30