这里需要家庭作业帮助。 我真的很想弄清楚递归及其运作方式。
问题是,写一个递归函数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]
但这并没有让我感到震惊......
答案 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]