-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

コードがデコレータを定義しているようです。_fnの内部定義は、再帰を容易にするためのものです。コードは以下を計算しています

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

すなわち、与えられた

b = 2
n = 3

値は次のようになります。

16 = 2^(2^(2^(2^0)
于 2012-09-03T03:14:46.640 に答える
3

b関数は、それ自体の累乗で累乗された時間を計算します。n-1ここで、nは少なくとも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 に答える
2

Pythonクラスを受講して、高校の代数の学生が理解できるように、これが何をするのかを説明する必要があります

関数fは2つの整数bnを取ります。最初のbを2番目のnの累乗で累乗し、nを1減らします。これは、 nがゼロになるまで繰り返され、累積結果が返されます。

これは、「何をするのか」のようなPython関連の質問には答えずassert isinstance(n, int) and n >= 0、OPの演習として残しておきます。

于 2012-09-03T03:59:33.347 に答える