在 Python 中对一个数取幂 N 次?

Exponentiate a number N times in Python?

我想编写一个函数,可以用相同的指数对基数进行 N 次幂运算。例如,如果我想对基数 2 进行三次平方,即计算 2^2^2^2,则预期答案为 256。这看起来微不足道,我编写了以下递归函数:

def exponentiate_n_times(base, exponent, n):
    if n == 0:
        return base**exponent
    return exponentiate_n_times(base**exponent, exponent, n=n-1)

然而,输出不正确:

print(exponentiate_n_times(2, 2, 3))
# 65536

然后我在 Python 中尝试了这个:

2**2**2**2

它也returns

65536

这让我很困惑,因为我期待 256。

我不知道我的功能有什么问题。任何人都可以建议正确的方法来取幂 N 次吗?

所以你想计算 base ** (exponent ** n),因为运算符 ** 已经从右到左绑定,我们可以跳过括号:

def exponentiate_n_times(base, exponent, n):
    return base ** exponent ** n

exponentiate_n_times(2, 2, 3) # 256
exponentiate_n_times(3, 2, 3) # 6561
exponentiate_n_times(3, 3, 3) # 7625597484987