2012-05-09 5 views
0

ここで宿題のヘルプが必要です。 私は本当に再帰とそれが動作する方法について頭を悩ましています。再帰ベースを使用して数字を抽出する

問題は、再帰関数dec2baseを書き込み、(nはa、b)は正の整数でベースB桁のリストを返すN

exmaple:

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

Iがあるはず理解私はそれが何であるかを考えることができません。

あるようなので、現時点では、すべての私のコードでは、なります

def dec2base(n, b): 
    if 

そして、それはそれです。どんな指導も素晴らしいだろう。ありがとうございました!

EDIT:このようなsomehtingための疲れコード:

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

それdoesntのは、再帰を理解するために... anwyehre

+0

数字が10の場合はどうしますか?数字が9の場合はどうしますか?これらの数字の違いは何ですか?それは基本ケースを理解するのに役立ちます。数字が10の場合は – Justin

+0

、それは既にベースにありますか? n == 10の場合、ベースケースはnを返すだけですか? – Hoops

+1

いいえ、数字のリストが必要です。 10は2桁です。だから、10時にはさらに進んでいく必要があります.9時にはあなたは完了です。 – Justin

答えて

1

を私を得るには、まず再帰を理解することがあります。 あなたはストップケースを自分で書きましたが、それは当然です。base**0

編集:あなたの編集:あなたはほとんどそれを持っています、あきらめないでください。 dec2baseにはいくつの引数がありますか?思うよ!

0

このタスクの重要な要素は、理解(または工夫) Horner's methodです。 私たちはあなたの方法で数字を書くことができます。

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

しかし、考えた後、10 + 4 (12 * 10 + 2)* 10 + 3)* 10 + 4

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

再帰をよりはっきりと見ることを望みます。各ステップで、数値がmod 10に分割できるかどうかを確認します。そうであれば、remainderは次の桁であり、商は再帰的に処理できます。

-1
def dec2base(n,b): 
    if n < b: 
     return [n] 
    else: 
     return dec2base(n//b, b) + [n%b] 
+3

コードを説明してください。コードのみの回答はしばしば下降し、おそらく削除される。 [回答]を参照してください。 – Bugs

関連する問題