チェス盤の各マスに置く小麦の粒の数が2倍になっていくとき、チェス盤全体で小麦の粒がいくつになるかを計算しましょう。
昔々、王子の命を救った賢い召使いがいました。王は、召使いが思い描くものなら何でも報酬として与えると約束しました。王がチェスを愛していることを知っていた召使いは、小麦の粒が欲しいと王に告げました。チェス盤の最初のマスに1粒、続くマスごとに粒の数が2倍になっていくように、と。
チェス盤には64のマスがあります(1番目のマスには1粒、2番目のマスには2粒、以下同様です)。
次のことを表示するコードを書いてみましょう。
この種の問題(答えが前の答えに依存するもの)は、再帰と呼ばれることがよくあります。 再帰を書く方法にはいくつかあります。なじみがない場合は、調べてみる価値があるでしょう。 Pharoは再帰に最適化されていて、よく使われるパターンです。
注意:元の問題仕様では、grainsCalculatorは#squareで呼び出されますが、このメソッドは#atSquare:に改名しました。これはよりSmalltalkらしい名前で、答えを「at a square」で求めていることをよく表しています。