麦粒

麦粒

简单

说明

计算棋盘上小麦的麦粒数量,已知每个方格上的麦粒数都会翻倍。

从前有一位聪明的仆人,他救了一位王子的命。国王许诺,无论仆人想要什么,都会满足他。仆人知道国王喜欢下棋,便告诉国王,他想要一些麦粒。棋盘第一个方格上放一粒,之后每个方格上的麦粒数都翻倍。

棋盘上有 64 个方格(第 1 个方格有 1 粒麦粒,第 2 个方格有 2 粒,依此类推)。

写代码实现以下内容:

  • 某个方格上有多少粒麦粒,以及
  • 棋盘上麦粒的总数

注意

这类问题(答案依赖于前一个答案)通常被称为递归。 实现递归的方式有多种,如果你还不熟悉,不妨去查一查相关资料。 Pharo 对递归做了很好的优化,它也是一种常用的模式。

注意:在原始的问题规范中,grainsCalculator 是通过 #square 调用的,不过我们把这个方法重命名为 #atSquare:,这个名字更像 Smalltalk 的风格,也更能表达出你是在请求“某个方格上”的答案。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Pharo Exercism

准备好开始 麦粒 了吗?

注册 Exercism,借助 50 个练习 和真人导师指导,学习并掌握 Pharo,全部免费。