こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

excel vbaのプログラムが作成できません

プログラミングでexcel vbaを勉強しています。
excel vbaのプログラムでフィボナッチ数列のプログラムを作れという問題なんですけど、正直全くわかりません。誰かこのプログラミングを教えてください。お願いします。

フィボナッチ数列は次のように帰納的に定義される。
fib(1) = fib(2) = 1
fib(n) = fib(n - 1) + fib(n - 2) (ただしn >= 3)
この関数fib(n)を定義せよ。ただし引数nはInteger型、fib関数の返す値はLong型とする。

またfib関数を呼び出す適当なメインプロシージャを定義し、A1セルからA20セルまでに
fib数列の1~20番目の値を書き出すようにせよ。
という問題です。ほんとに困ってますお願いします

投稿日時 - 2014-12-20 22:04:23

QNo.8865062

すぐに回答ほしいです

質問者が選んだベストアンサー

vbaの基礎はできているのですか。

要するにプログラムのメインの部分は

dim FIB(1000)

FIB(1)=1 : FIB(2)=1

for N=2 to 100 : FIB(N)=FIB(N-1)+FIB(N-2) : next N

あとは手続的な話だけでしょう。

投稿日時 - 2014-12-20 22:37:32

このQ&Aは役に立ちましたか?

16人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

No2投稿前に書き換えてミスしてました


Cells(i, 1).Value = CalFIB(i)

Cells(i, 1).Value = fib(i)

投稿日時 - 2014-12-21 09:22:11

ANo.2

もし、問題文が質問内容の通りなら、「自分で考えて作りました!」とか言うと
ボロが必ず出る設問になっています。教えて貰った事を必ず申告しましょう


Sub fncFib()
 Dim i As Integer
 For i = 1 To 20
  Cells(i, 1).Value = CalFIB(i)
 Next i
End Sub


Function fib(n As Integer) As Long
 ' 戻り値
 fib = 0

 ' 計算結果を格納する配列arrayFibを宣言する
 ' ただし、47回目の帰納で計算結果がLong型の上限を超える為、配列数は46とする
 Dim arrayFib(46) As Long

 arrayFib(1) = 1
 arrayFib(2) = 1

 For i = 3 To n
arrayFib(i) = arrayFib(i - 1) + arrayFib(i - 2)
 Next i

 ' 戻り値を設定する
 fib = arrayFib(n)
End Function

投稿日時 - 2014-12-21 09:19:00

あなたにオススメの質問