0

ここで宿題の助けが必要です。再帰とその仕組みについて理解するのに本当に苦労しています。

問題は、正の整数 n の基数 b の数字のリストを返す再帰関数 dec2base(n,b) を作成することです。

例:

dec2base(120, 10) => [1,2,0] (1*10*2 + 2/10**1 + 0*10**0)

ストップケースが必要なのは理解していますが、それが何であるかはわかりません。

したがって、現時点では、私のコードは次のようになります。

def dec2base(n, b):
    if

以上です。どんなガイダンスも素晴らしいでしょう。ありがとうございました!

編集:このようなもののためのコードを疲れさせました:

def dec2base(n, b):
    if n < 10:
        return [n]
    else:
        return getdigits(n/b) + [n%b] 

しかし、それは私を不安にさせません...

4

3 に答える 3

1

再帰を理解するには、まず再帰を理解する必要があります。ストップケースはご自身でおっしゃいましたが、もちろん到達時ですbase**0

編集: @your 編集: ほぼ理解できました。あきらめないでください。dec2base はいくつの引数を取りますか? 考える!

于 2012-05-09T22:15:46.710 に答える
0

このタスクの重要な要素は、 ホーナーの方法を理解 (または考案) することです。あなたのやり方で数字を書くことができます:

1234 = 1*10 3 + 2*10 2 + 3*10 1 + 4*10 0

しかし、少し考えた後、次の表現にたどり着きました。

1234 = 123*10 + 4 = (12*10 + 3)*10 + 4 = ((1*10 + 2)*10 + 3)*10 + 4

再帰をより明確に理解していただければ幸いです。各ステップで、数値が mod 10 で割り切れるかどうかを確認します。割り切れる場合は、剰余は次の桁であり、商は再帰的に処理できます。

于 2012-05-09T22:27:53.593 に答える