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

締切り済みの質問

配列を用いて、次のFibonacciの数列{a(n)}n=1,2・・・を計算するプログラムを作りなさい。

配列を用いて、次のFibonacciの数列{a(n)}n=1,2・・・を計算するプログラムを作りなさい。
a(n+2)=a(n+1)+a(n),a(1)=1,a(2)=1


で、私が作ったプログラムは

DIM a(n)
INPUT n
LET a(1)=1  
print 1,a(1)
let a(2)=1
print 2,a(2)
for i=3 to n
let a(i)=a(i-1)+a(i-2)
print i,a(i)
next i
end

なのですが、うまくいきません。
どこを改善したらいいかを教えてください。
よろしくおねがいします。

投稿日時 - 2009-02-08 18:23:58

QNo.4700205

すぐに回答ほしいです

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

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

回答(2)

ANo.2

「うまくいかない」というときには, 「どのように」うまくいかないのかをちゃんと書くこと. 少なくとも「どのような入力に対し」「どのようか結果を期待して」「実際にはどのような結果になったか」を書かないと, 「うまくいった」かどうかを他人が判断できません.
でとりあえず for の増分はデフォルトで 1 なんだけど>#1, 最初に DIM a(n) とやったときの n の値はいくつ?

投稿日時 - 2009-02-08 21:14:28

ANo.1

パッと見た点では

nが3より小さいに場合に無限ループになりそうです。
しかも表示される答えがおかしなものになりそうです。
nが3より大きくても無限ループになりそうです。
nが3の時だと答えが表示されなさそうです。
そうでなくても最後の答えが表示されなさそうです。
nが大きくなった辺り(例えば65536)で
プログラムがコケる恐れがあります。
それ以前に、a(n)がとてつもなく大きくなるので
オーバーフローでコケる恐れがあります。
さらには表示されている内容が
良く分からない数字列になっているような感覚になる可能性もあります。

もっと細かい事を言うなら
出題内容で記述されている計算式と
プログラム中に記述されている計算式において
出てくる答えは同じであるものの仕様が異なるため
題意が満たされていない。

ひとまずは
「 for i=3 to n 」
の辺りに鍵があるようです。
iの増分が無条件に1となっているなら問題なさそうですが。。。

投稿日時 - 2009-02-08 20:33:38

あなたにオススメの質問