0

这里需要家庭作业帮助。我真的很难理解递归及其工作方式。

问题是,编写一个递归函数 dec2base(n,b),它返回正整数 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

编辑:@你的编辑:你几乎明白了,不要放弃。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

我希望你能更清楚地看到递归。在每个步骤中,检查数字是否可以除以 10。如果可以,余数是下一个数字,商可以递归处理。

于 2012-05-09T22:27:53.593 回答
-1
def dec2base(n,b):
    if n < b:
        return [n]
    else:
        return dec2base(n//b, b) + [n%b]
于 2017-05-26T06:30:55.683 回答