ビーチで遊んでいて、小石で三角形を作ろうと思ったとします。1段目に1個、2段目に2個、3段目に3個というように、次のように並べていくのです:
*
* *
* * *
* * * *
(約2500年前、ピタゴラスらはこのような問いを考えることで、数論の端緒を切り拓きました。)
7段の三角形を作るのに、小石がいくつ必要か知りたいとしましょう。
明らかに、やるべきことは1から7までの数値を合計することです。これには2つの方法があります。最小の数値である1から始めて、1, 2, 3,
4と順に合計していく方法か、あるいは最大の数値から始めて、7, 6, 5, 4と順に合計していく方法です。どちらの手法もwhileループの一般的な記述方法を示しているため、カウントアップするものとカウントダウンするものの2つの例を作成します。この最初の例では、1から始めて2,
3, 4と順に合計していきます。
少数の数値を足し合わせるだけであれば、一度にすべての数値を足すのが最も簡単な方法です。しかし、リストにいくつの数値が入るかあらかじめ分からない場合や、非常に長いリストに備えたい場合は、複雑な処理を一度行うのではなく、単純な処理を何度も繰り返すように足し算を設計する必要があります。
例えば、小石をすべて一度に足し合わせるのではなく、1段目の小石の数1を2段目の数2に足し、さらにその2段の合計を3段目の数3に足すという方法があります。それから、最初の3段の合計に4段目の数4を足す、という具合に進めていきます。
このプロセスの重要な特徴は、個々の反復操作が単純である点にある。この場合、各ステップで加算するのは、その行にある小石の数と、すでに見つかった合計値という、わずか2つの数値だけである。この2つの数値を加算する操作は、最後の行がそれまでのすべての行の合計に加算されるまで、繰り返し行われる。より複雑なループでは、反復操作はそれほど単純ではないかもしれないが、すべてを一度に行うよりは単純である。