2

2 つの値を返す関数を作成したいと考えています。1 つ目は ackerman 関数の出力で、2 つ目は関数が呼び出された回数です。

Ack 関数を作成しました。

def ack(m,n):
    if m == 0:
        return n + 1
    elif m > 0 and n == 0:
        return ack(m - 1.0, 1.0)
    elif m > 0 and n > 0:
        return ack(m - 1.0, ack(m, n - 1.0))

グローバルカウントを作成して、if と elif の前に追加して、答えを返してみました。

global count
count +=1

if m == 0:
    return n+1, count

これは明らかに間違っています。m = 0 になるたびにカウントを返し、タプルになります。

(たとえば)ack(3,4)の回答のリスト(125である必要があります)と、ack(m、n)を呼び出さなければならなかった回数のリストを返すようにするにはどうすればよいですか。したがって、ack(1.0,0.0) を呼び出すと、[2.0, 2] が返されます。その合計でいくつかの計算を行う必要があるため、リストが必要です。

私が知る必要がある理由は、教師が私たちに与えた課題のためであり、私は完全に立ち往生しています.

4

2 に答える 2