next up previous
Next: 2.3 課題5A (必修) Up: 2 FOR 〜 NEXT Previous: 2.1 FOR NEXT 構文

2.2 簡単な漸化式

例題1. 定数 $ r$ が与えられたとき、漸化式

$\displaystyle a_1=1,\quad a_{n}=r a_{n-1}$   $\displaystyle \mbox{($n\ge 2$)}$

で定義される数列 $ \{a_n\}_{n\in\N}$ の最初の 100 項を求めよ。 -- 要するに等比数列 $ a_n=r^{n-1}$ですが、 この仕事を漸化式の通りに遂行するには、 例えば次のようなプログラムを書けば OK です。
配列を使うバージョン touhi1.bas
REM 等比数列 (配列を使うバージョン)
DIM A(100)
INPUT PROMPT "r=": r
A(1)=1
FOR n=2 to 100
  A(n)=r*A(n-1)
  print n;A(n)
NEXT n
END

やってみよう     DIM, INPUT PROMPT 等の 命令の説明をオンライン・ヘルプで読んでみましょう。


演算精度を上げておくべきかもしれません。 これは (1000桁演算モード) ボタンを押しても実現できますが、 プログラムの先頭部分に例えば
  OPTION ARITHMETIC DECIMAL_HIGH
と書いてもよいでしょう。

ちょっと質問     ``arithmetic'' って何でしょうね?


実は一度 A(n-1) として使われた後はもう使われなくなるので、 次のようなプログラムで済ませることが出来ます。
配列を使わないバージョン touhi2.bas
REM 等比数列 (配列を使わないバージョン)
INPUT PROMPT "r=": r
A=1
FOR n=2 to 100
  A=r*A
  print n;A
NEXT n
END

配列変数の代りに、 普通の変数 Aだけで済んでいる理由を理解しましょう。 代入文 A=r*A は、数学に現れる等式とは違って、 一般には \fbox{変数名}=\fbox{式} という文法に従ったものであり、 最初に = の右にある式を評価し、 その値を = の左にある変数に記憶する。 例えば A=A+1A の値を $ 1$ 増やすコードである。


next up previous
Next: 2.3 課題5A (必修) Up: 2 FOR 〜 NEXT Previous: 2.1 FOR NEXT 構文
Masashi Katsurada
平成22年6月2日