主要内容
计算数字的幂
虽然JavaScript有一个内置的
pow
函数来计算一个数字的幂,你可以递归地编写一个类似的函数,它可以非常有效。 唯一的问题是指数必须是整数。假设你想要计算 ,其中 是任何实数, 是任何整数。 如果 为0,那很容易,因为 ,无论 是多少。 这是一个很好的例子。
所以现在让我们看看当 为正时会发生什么。 让我们首先回想一下,当你乘以 的幂时,你添加指数: 对于任何基数 和任何指数 和 都应该成立。 因此,如果 为正数且为偶数,那么 。 如果你以递归方式计算 ,那么你可以将 计算为 。 如果 是正数和奇数怎么办? 那么 , 或者是0或者是正数和偶数。 我们刚刚看到当指数为0或者是正数和偶数时如何计算 的幂。 因此,您可以递归计算 ,然后使用此结果计算 。
当 为负时怎么办? 那么 ,指数 为正,因为它是负数的否定。 所以你可以递归计算 并取其倒数。
将这些观察结果放在一起, 我们得到了以下计算 的递归算法:
- 基本情况是
, 。 - 如果
为正数且为偶数,则递归计算 ,那么 。 请注意,在这种情况下,您只需要进行一次递归调用,只计算一次 ,然后将此递归调用的结果乘以它。 - 如果
是 正数且为奇数,递归计算 ,使指数为0或为正偶数。 那么, 。 - 如果
为负数,则递归计算 ,以使指数变为正数。 然后, 。