列表输出被复制
List output being duplicated
我创建了一个简单的递归函数来确定数字是偶数还是奇数,对它们执行数学运算,并将它们附加到列表中:
iter_list = []
def function(n):
iter_list.append(n)
if n < 2:
print iter_list
print iterations
pass
elif n % 2 == 0:
even = n / 2
iter_list.append(even)
collatz(even)
elif n % 2 == 1:
odd = (3 * n) + 1
iter_list.append(odd)
collatz(odd)
else:
print "Code not working."
pass
stdin = input("Number")
print collatz(stdin)
iterations = len(iter_list) - 1
当我运行函数带276时,输出为:
Number[276, 138, 138, 69, 69, 208, 208, 104, 104, 52, 52, 26, 26, 13, 13, 40, 40, 20, 20, 10, 10, 5, 5, 16, 16, 8, 8, 4, 4, 2, 2, 1, 1]
这是我所期望的,除了每个数字有两个实例,而不是一个。
我该如何解决这个问题?
让我们看看 n == 4
:
时会发生什么
def function(n):
iter_list.append(n)
if n < 2:
print iter_list
print iterations
pass
elif n % 2 == 0:
even = n / 2
iter_list.append(even)
collatz(even)
...
- 在第 2 行,我们追加
4
.
- 在第 9 行,我们追加
2
.
- 我们叫
collatz(2)
- 在第 2 行,我们追加
2
.
- 在第 9 行,我们追加
1
.
- 我们叫
collatz(1)
请注意,我们添加了 2
两次!也许您应该只在函数的开头附加到列表,而不是附加在条件语句中。
我创建了一个简单的递归函数来确定数字是偶数还是奇数,对它们执行数学运算,并将它们附加到列表中:
iter_list = []
def function(n):
iter_list.append(n)
if n < 2:
print iter_list
print iterations
pass
elif n % 2 == 0:
even = n / 2
iter_list.append(even)
collatz(even)
elif n % 2 == 1:
odd = (3 * n) + 1
iter_list.append(odd)
collatz(odd)
else:
print "Code not working."
pass
stdin = input("Number")
print collatz(stdin)
iterations = len(iter_list) - 1
当我运行函数带276时,输出为:
Number[276, 138, 138, 69, 69, 208, 208, 104, 104, 52, 52, 26, 26, 13, 13, 40, 40, 20, 20, 10, 10, 5, 5, 16, 16, 8, 8, 4, 4, 2, 2, 1, 1]
这是我所期望的,除了每个数字有两个实例,而不是一个。 我该如何解决这个问题?
让我们看看 n == 4
:
def function(n):
iter_list.append(n)
if n < 2:
print iter_list
print iterations
pass
elif n % 2 == 0:
even = n / 2
iter_list.append(even)
collatz(even)
...
- 在第 2 行,我们追加
4
. - 在第 9 行,我们追加
2
. - 我们叫
collatz(2)
- 在第 2 行,我们追加
2
. - 在第 9 行,我们追加
1
. - 我们叫
collatz(1)
请注意,我们添加了 2
两次!也许您应该只在函数的开头附加到列表,而不是附加在条件语句中。