麥粒

麥粒

簡單

說明

計算西洋棋棋盤上的小麥麥粒數量,已知每個格子上的數量都會加倍。

從前有一位聰明的僕人,他救了一位王子的性命。國王答應要賞賜僕人任何他能想到的東西。僕人知道國王熱愛西洋棋,便告訴國王他想要小麥的麥粒。棋盤的第一格放一粒麥粒,之後每一格的麥粒數量都加倍。

西洋棋棋盤上有 64 格(第 1 格有 1 粒麥粒,第 2 格有 2 粒麥粒,依此類推)。

請撰寫程式碼,顯示:

  • 某個格子上有多少粒麥粒,以及
  • 棋盤上麥粒的總數

Note

這類問題(答案取決於前一個答案)通常稱為遞迴。遞迴有各種不同的寫法,如果你還不熟悉,或許值得去研究一下。Pharo 對遞迴做了良好的最佳化,而且這也是常見的模式。

注意:在原始的問題規格中,grainsCalculator 是透過 #square 呼叫的,不過我們把這個方法重新命名為 #atSquare:,這個名稱更有 Smalltalk 的風格,也更能說明你是在要求「某個方格上」的答案。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Pharo Exercism

準備好開始 麥粒 了嗎?

註冊 Exercism,透過 50 個練習 和真人引導來學習並精通 Pharo,全部免費。