prim(n)
是我编写的函数,它检查数字n
是否为正数。
prim_2(n)
会返回所有素数的列表,直到n。
prim_liste = []
def prim_2(n):
if n == 1:
prim_liste.reverse()
print(prim_liste) # return prim_liste doesn't work.
elif n > 1:
if prim(n) == "Is prim":
prim_liste.append(n)
prim_2(n-1)
elif prim(n) == "Is not prim":
prim_2(n-1)
如果我将print(prim_liste)
替换为return prim_liste
,我的测试无论如何都会失败。
prim_2(5)== [2,3,5]
虽然我的代码有效,但确实返回False。
当我使用return prim_liste
运行程序时,它什么也没发生。
使用print(prim_liste)
它会"返回"正确的结果。
谢谢你的帮助! :)对不起,我的英文不好,这个令人困惑的帖子。
答案 0 :(得分:0)
您还需要在递归中使用return prim_2(n-1)
,否则函数不会返回除1以外的任何内容。
在一种情况下,单个返回不会从整个递归返回,只能从该阶段返回,并且对该函数的所有其他调用也必须返回一个值。
答案 1 :(得分:0)
您应该会在代码中看到打印出的清单。如果没有,prim()肯定有问题。如果您需要prim_2()返回主要列表,则需要执行以下操作。
prim_liste = []
def prim_2(n):
if n == 1:
prim_liste.reverse()
return prim_liste
elif n > 1:
if prim(n) == "Is prim":
prim_liste.append(n)
# test for "Is not prim" is not necessary.
return prim_2(n-1) # be sure to return what prim_2() returns
答案 2 :(得分:0)
我的错误是我在递归中没有使用return。 所以它无法给我一个结果。 使用print()它向我展示了结果,但测试无法正常工作,因为如果不使用return,函数只返回None。 因为我的所有测试都失败了,尽管代码似乎是正确的。
prim_liste = []
def prim_2(n):
if n == 1:
prim_liste.reverse()
return prim_liste
elif n > 1:
if prim(n) == "Is prim":
prim_liste.append(n)
return prim_2(n-1)
else:
return prim_2(n-1)