以下的家庭作业问题让我(以及我提出的TA问题)感到困惑:
请注意power方法的requires子句,特别是 以下断言: Integer.MIN_VALUE< = n ^(p)< = Integer.MAX_VALUE
- 如果客户违反此前提条件会怎样?
- 对root方法的合法调用是否可能违反power方法的requires子句?
- 客户如何检查电源的前提条件?
这对我来说似乎是一个技巧问题,给定的幂方法返回n^(p)
的结果,其中n是函数的唯一参数。
require子句是由客户端(一个调用函数)完成的,但是如果调用方法的整个点,客户端如何知道n^(p)
是否在整数类型的范围内是计算n^(p)
?在返回方法之前,所有客户端都知道n
的值。
显然,如果客户端违反了这个前提条件,我们将获得溢出和回滚。
然后,查看第二个项目符号点,客户端确实可以传入一个参数n,该参数n在int类型的范围内,但是一旦被驱动就超过了该参数。但是,由于前提条件会被违反,这在技术上不是合法的电话吗?
最后,如果检查该前提条件是调用电源方法开始的整个点,客户端如何检查电源的前提条件?