使用基数递归提取数字

时间:2012-05-09 22:10:30

标签: python recursion

这里需要家庭作业帮助。 我真的很想弄清楚递归及其运作方式。

问题是,写一个递归函数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] 

但这并没有让我感到震惊......

3 个答案:

答案 0 :(得分:1)

要理解递归,首先必须了解递归。 你自己说过停止案例,当然是在达到base**0

编辑:@your编辑:你差不多了,不要放弃。 dec2base有多少参数?想!

答案 1 :(得分:0)

这项任务的关键要素是理解(或设计) Horner's method。 我们可以用你的方式写数字:

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.如果是,则余数是下一个数字,商可以递归地工作。

答案 2 :(得分:-1)

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