2014-04-23 60 views
-1

我有下面的代码,但它运行时不起作用。我希望它返回如下形式:[5,10,15,20]如果n的输入值是4.任何建议非常感谢。如何使用递归来查找Python中数字的增量?

def MultipleRecursive(n): 
    multiples=[] 
    if n==0: 
     multiples.append(n) 
    else: 
     Total=5*MultipleRecursive(n-1) 
     multiples.append(Total) 
    return multiples 
+2

为一体,你的缩进是错误的 – njzk2

+0

然后,'MultipleRecursive'返回一个列表。 5 *列表是5个列表。那么,你的示例输出不包含任何'0',但是,你在结果中追加'0'(当n == 0时)。 – njzk2

+0

在这里使用递归的任何特定原因?对于你所拥有的最简单的解决方案就像'[5 * i我在范围内(1,n + 1)]' –

回答

3

一个不重要的版本是:

def mr(n): 
    if n == 0: 
     return [] 
    return mr(n-1) + [5*n] 
+0

好吧,我只是修改它包括一个else语句和条件之上定义的空列表。非常感谢。 – codeitup

0

你可以试试这个:

def rek(n): 
    list = [] 
    if n == 0: 
     return list 
    else: 
     list = rek(n-1) 
     list.append(5*n) 
     return list 

print rek(4) 
>>> [5, 10, 15, 20] 
+0

这工作得很好,并帮助我了解情况。有什么办法让n是唯一的参数,并在函数中定义一个空白列表来操作?谢谢! – codeitup

+0

你确实意识到你可以反转2行而不必排序,对(在这种情况下,你根本不需要通过这个列表,因为反正它是空的)?同样,你可以为list定义一个默认值,而不需要在第一次调用时传递一个空列表。 – njzk2

+0

对不起,几天没有在我的笔记本电脑周围,这里有变化。 – jgrgurica