【发布时间】:2019-05-03 22:24:00
【问题描述】:
我想我在理解为什么我附加到列表中的整数只停留在循环内时遇到了一些问题,但在循环之外,列表是空的。
对于本练习,我正在尝试创建一个程序,该程序接受一个数字并使用 recursive 函数来输出 syracuse 序列。
import sys
def syracuse(nr):
''' syracuse function '''
nr = int(nr)
seq = []
if nr != 1:
if (nr % 2 != 0):
n = 3*nr+1
else:
n = nr // 2
seq.append(n)
print(seq)
syracuse(n)
else:
return seq
def main(argv):
''' main function '''
if len(argv) == 2:
print(syracuse(argv[1]))
else:
print("Error! One number should be included in the query."
.format(argv[0]), file = sys.stderr)
if __name__ == '__main__':
main(sys.argv)
输入 '5' 我的输出是:
[16]
[8]
[4]
[2]
[1]
None
所以我的问题是:当我的 if nr!=1 循环中确实将变量“n”附加到它时,我的列表“seq”为什么会输出“无”。如何从循环中提取变量?这是我不明白的事情还是有其他的事情?
我希望我的问题是连贯的。提前致谢。
请注意,虽然我知道 Python 不适用于 递归 函数,但这是练习,我必须实现它。
【问题讨论】:
-
您没有在递归中将
seq处理到下一个级别。因此,每个递归步骤都会创建一个自己的新版本seq。
标签: python list loops integer local-variables