フィボナッチ数列
回答例
func getFibonacci(limit: Int) -> [Int] {
guard limit >= 0 else {
return []
}
// 現在の値(初期値: a[1] = 1)
var currentNumber = 1
// 前項の値(初期値: a[0] = 0)
var preNumber = 0
var fibonacci: [Int] = [preNumber]
while currentNumber <= limit {
fibonacci.append(currentNumber)
// 更新
let nextNumber = currentNumber + preNumber
preNumber = currentNumber
currentNumber = nextNumber
}
return fibonacci
}
解説
フィボナッチ数列の漸化式はa[n+1]=a[n]+a[n-1]
と表されます。
a[0]=a[-1]+a[-2]
、a[1]=a[0]+a[-1]
は計算できないためそれぞれ初期値として0, 1という値が与えられます。
現在の判定される値としてcurrentNumber
前項の値としてpreNumber
を変数として定義しそれぞれa[0], a[1]として初期化します。
あとはwhile currentNumber <= limit
でリミットに達するまでループを回します。
判定処理後、配列に追加し次の値に更新しています。