【发布时间】:2020-05-27 18:26:57
【问题描述】:
我正在尝试创建一个程序,列出输入数字下方的所有素数,我想出了代码:
def primes():
num = 20
numlist = list(range(1,num+1))
i = len(numlist)
for j in numlist[2:]:
ans = divisible(j,i)
if ans:
numlist.remove(j)
print(numlist)
def divisible(m,n):
if m!=n and m%n==0:
return True
elif n == 1:
return False
else:
divisible(m, n-1)
primes()
(我使用了浏览器内的 IDE,所以 num 部分是输入的代理。)
我的想法是创建一个单独的函数divisible(),当输入两个整数m 和n 时,将检查n 是否除以m。我不确定我的递归是否正确,但我写了divisible(m,n-1) 的想法是它会从n 向下迭代所有整数,如果有n 除@987654332,它将返回True @,或者False,如果它到达1。
在主代码中,m 遍历了list 中的所有数字,n 是同一list 中的元素总数。我将print(numlist) 放在if 语句中作为错误检查。我遇到的问题是打印。代码实际上什么也没返回。在这里递归的工作方式有什么我遗漏的吗?
【问题讨论】: