我试图写一个函数来返回一些正整数
的除数列表除数(12)=> [1,2,3,4,6,12]
我用for循环做了,然后尝试用递归来做,但我无法弄清楚如何做到这一点并且没有在任何语言中找到它的在线示例。
def divisors(n,l=[]):
b=1
if n < 1:
return l
if n == 1:
我认为使用l = []会比yield更好,但无论如何,我都无法使用它。
修改 使用@vks代码我写了以下内容:
def fun(n, l=[],divisor=1):
if n % divisor == 0:
l.append(divisor)
if divisor == n:
return None
fun(n, l, divisor+1)
return l
答案 0 :(得分:3)
你可以尝试这样的事情。
x=12
l=[]
def fun(n, l):
if x%n==0:
l.append(n)
if n==1:
return None
fun(n-1, l)
fun(x, l)
print l
答案 1 :(得分:1)
这个怎么样,
>>> n = 12
>>> l = [i for i in range(1, n+1) if n%i==0]
>>> l
[1, 2, 3, 4, 6, 12]