Обчисліть кількість зерен пшениці на шахівниці, знаючи, що кількість на кожній клітинці подвоюється.
Жив колись мудрий слуга, який урятував життя принца. Король пообіцяв дати все, що тільки слуга зможе вигадати. Знаючи, що король любить шахи, слуга сказав королю, що хотів би отримати зерна пшениці. Одне зерно на першій клітинці шахівниці, а на кожній наступній кількість зерен подвоюється.
На шахівниці 64 клітинки (де на клітинці 1 одне зерно, на клітинці 2 два зерна, і так далі).
Напишіть код, який показує:
Такі типи задач (де одна відповідь залежить від попередньої) часто називають рекурсією. Існують різні способи писати рекурсивний код; варто пошукати додаткові матеріали, якщо ми з цим ще не знайомі. Pharo добре оптимізований для рекурсії, і це поширений прийом.
Примітка: в оригінальній специфікації задачі grainsCalculator викликають через #square, однак ми перейменували цей метод на #atSquare:. Ця назва більш характерна для Smalltalk і краще описує, що ми запитуємо відповідь «на конкретній клітинці».