روزی روزگاری، خدمتکار دانایی بود که جانِ شاهزادهای را نجات داد. پادشاه وعده داد هر آنچه خدمتکار به ذهنش برسد، بپردازد. خدمتکار که میدانست پادشاه عاشق شطرنج است، به پادشاه گفت که دانههای گندم میخواهد. یک دانه روی خانهی اول صفحهی شطرنج و در هر خانهی بعدی، تعداد دانهها دو برابر میشود.
تعداد دانههای گندم روی یک صفحهی شطرنج را محاسبه کنید.
یک صفحهی شطرنج ۶۴ خانه دارد. خانهی ۱ یک دانه دارد، خانهی ۲ دو دانه دارد، خانهی ۳ چهار دانه دارد و به همین ترتیب، هر بار دو برابر میشود.
کدی بنویسید که این موارد را محاسبه کند:
معمولاً به این نوع مسائل (که در آنها پاسخ یک مسئله به پاسخ مسئلهی قبلی وابسته است) «بازگشت» میگویند. راههای مختلفی برای نوشتن کد بازگشتی وجود دارد؛ اگر با این مفهوم آشنا نیستید، شاید ارزش داشته باشد که کمی دربارهاش تحقیق کنید. Pharo برای بازگشت به خوبی بهینهسازی شده است و الگویی پرکاربرد به شمار میرود.
نکته: در مشخصات اصلی مسئله، grainsCalculator با #square فراخوانی میشود، اما ما نام این متد را به #atSquare: تغییر دادهایم؛ نامی که بیشتر به Smalltalk شبیه است و بهتر نشان میدهد که شما پاسخی را «در یک خانه» میخواهید.