- 締切済み
配列を用いて、次の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 なのですが、うまくいきません。 どこを改善したらいいかを教えてください。 よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
「うまくいかない」というときには, 「どのように」うまくいかないのかをちゃんと書くこと. 少なくとも「どのような入力に対し」「どのようか結果を期待して」「実際にはどのような結果になったか」を書かないと, 「うまくいった」かどうかを他人が判断できません. でとりあえず for の増分はデフォルトで 1 なんだけど>#1, 最初に DIM a(n) とやったときの n の値はいくつ?
- hisappy
- ベストアンサー率46% (184/392)
パッと見た点では nが3より小さいに場合に無限ループになりそうです。 しかも表示される答えがおかしなものになりそうです。 nが3より大きくても無限ループになりそうです。 nが3の時だと答えが表示されなさそうです。 そうでなくても最後の答えが表示されなさそうです。 nが大きくなった辺り(例えば65536)で プログラムがコケる恐れがあります。 それ以前に、a(n)がとてつもなく大きくなるので オーバーフローでコケる恐れがあります。 さらには表示されている内容が 良く分からない数字列になっているような感覚になる可能性もあります。 もっと細かい事を言うなら 出題内容で記述されている計算式と プログラム中に記述されている計算式において 出てくる答えは同じであるものの仕様が異なるため 題意が満たされていない。 ひとまずは 「 for i=3 to n 」 の辺りに鍵があるようです。 iの増分が無条件に1となっているなら問題なさそうですが。。。