-1
def f(b, n):
    assert isinstance(n, int) and n >= 0
    def _f(n):
        if n == 0: return 1
        else: return b ** _f(n-1)
    return _f(n)

参加 Python 课程,我们必须解释它的作用,以便高中代数学生能够理解。我搞不清楚了。如果有人可以在不给我答案的情况下将我推向正确的方向,我将不胜感激。

4

3 回答 3

3

函数计算b提升到自身的幂次 提升到自身的幂n-1次 where nis at least 1。它等价于这个更简单的非递归函数:

def g(b, n):
    assert isinstance(n, int) and n >= 0
    ret = 1
    for _ in xrange(n):
        ret = b ** ret
    return ret

它看起来像这样写成一个数学公式:

函数的数学公式

于 2012-09-03T05:06:55.440 回答
3

似乎代码定义了一个装饰器_fn的内部定义是为了便于递归。该代码正在计算以下内容

b^(b^(b^(... (b^(b^0)))...))

即,给定

b = 2
n = 3

该值将是:

16 = 2^(2^(2^(2^0)
于 2012-09-03T03:14:46.640 回答
2

上 Python 课,我们必须解释它的作用,以便高中代数学生能够理解

函数f接受两个整数bn。它将第一个b提高到第二个n的幂,并将n减少1。重复此操作直到n为零,并返回累积结果。

这没有回答任何与 Python 相关的问题,例如“做assert isinstance(n, int) and n >= 0什么”,我将其留给 OP 作为练习。

于 2012-09-03T03:59:33.347 回答