2 回答
TA贡献1886条经验 获得超2个赞
我认为您的问题是您正在打印结果而不是从函数中返回它。
如果您将代码更改为这样,它应该修复它:
def nextDivisible(n):
if n % 17 == 0:
return n
return nextDivisible(n + 1)
这与递归的工作原理是,您的函数nextDivisible将被重复调用,直到它达到n可被 整除的基本情况17。当这种情况发生时,它会n一直返回递归堆栈到最初第一次调用函数的位置。
您也不需要 else 语句,因为return语句脱离了函数代码。但有时else's 有利于可读性。
TA贡献1909条经验 获得超7个赞
你不需要:
print(nextDivisible(n))
我认为你被None打印出来是因为你的函数没有返回任何东西。打印函数的返回也是多余的,因为您在循环内打印数字。
所有你需要的是:
nextDivisible(n)
它将打印可整除的数字。
如果您nextDivisible()在其他函数中使用,根据您使用它的方式的性质,可能需要 return 语句可能毫无意义。
出于所有意图和目的,这应该可以正常工作。
和python 3.x:
x = [x for x in range(1000)]
def nextDivisible(x, mod=17):
c = 0
for n in x:
if n % mod == 0:
print(n)
c += 1
else:
#nextDivisible(n+1)
pass
print('{} numbers divisible by {} in {}'.format(c, mod, len(x)))
nextDivisible(x)
预期输出:
59 total numbers divisible by 17 in 1000
添加回答
举报