0

私は Visual Basic で配列と関数を使用するのが初めてで、これを理解できないようです。私の問題は、関数を呼び出すたびにFibo、値に関係なく 0 が返さnれることです。エラーはかなり基本的なものだと確信しています。

どんなポインタでも本当に感謝しています!

Public Function fibo(n As Integer) As Integer

    Dim arrayFib(n + 1) As Integer 'declare array to hold fibonacci

    arrayFib(0) = 0 'idem
    arrayFib(1) = 1 'declare start value

    Dim i As Integer = 2 'start position

    While i <= n
        arrayFib(i) = arrayFib(i - 1) + arrayFib(i - 2)
        i = 1 + i

    Return arrayFib(i)
4

1 に答える 1

3
Dim arrayFib(n + 1) As Integer 'declare array to hold fibonacci

その+1がどこから来たのか、ある程度推測できます。元のコードが IndexOutOfRangeException でクラッシュしたため、追加しました。arrayFib(i) を返したことが原因で、i がインクリメントされてn よりも大きくなり、その値はループ後に n+1 になります。したがって、割り当てられなかった要素の値を返します。あなたはそれを正しく修正しませんでした:)

配列宣言を修正して元に戻し、代わりに arrayFib(n) を返します。

于 2013-09-19T20:41:56.570 に答える