例題1. 定数 が与えられたとき、漸化式
で定義される数列 の最初の 100 項を求めよ。 -- 要するに等比数列 ですが、 この仕事を漸化式の通りに遂行するには、 例えば次のようなプログラムを書けば OK です (上の漸化式とプログラムを見比べて下さい)。
配列を使うバージョン touhi1.bas |
REM touhi1.BAS REM 等比数列 (配列を使うバージョン) DIM A(100) INPUT PROMPT "r=": r A(1)=1 print 1;A(1) FOR n=2 to 100 A(n)=r*A(n-1) print n;A(n) NEXT n END |
(細かい注: 十進 BASIC の配列は、普通添字が から始まります。 つまり DIM A(100) とすると、 A(1), A(2), A(3), , A(100) が使えるようになります。 OPTION BASE 0 とすると、添字は 0 から始まります。 DIM A(2 TO 8) のように、 添字の下限と上限を指定することも出来ます。)
やってみよう DIM, INPUT PROMPT 等の 命令の説明をオンライン・ヘルプで読んでみましょう。
等比数列はものすごい勢いで大きくなったり小さくなったりするので、 演算精度を上げておくべきかもしれません。 これは (1000桁演算モード) ボタンを押しても実現できますが、 プログラムの先頭部分に例えば
OPTION ARITHMETIC DECIMAL_HIGH |
ちょっと質問 ``arithmetic'' って何でしょうね?2
実は一度 A(n-1) として使われた後はもう使われなくなるので、 次のようなプログラムで済ませることが出来ます。
配列を使わないバージョン touhi2.bas |
REM touhi2.BAS REM 等比数列 (配列を使わないバージョン) INPUT PROMPT "r=": r A=1 print 1;A FOR n=2 to 100 A=r*A print n;A NEXT n END |
配列変数の代りに、 普通の変数 Aだけで済んでいる理由を理解しましょう。 代入文 A=r*A は、数学に現れる等式とは違って、 一般には