【问题标题】:List output being duplicated列表输出被复制
【发布时间】:2015-04-26 21:03:45
【问题描述】:

我创建了一个简单的递归函数来确定一个数字是偶数还是奇数,对它们进行数学运算,并将它们附加到一个列表中:

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]

这是我所期望的,除了每个数字有两个实例,而不是一个。 我该如何解决这个问题?

【问题讨论】:

  • 我猜你的意思是def collatz(n):

标签: python list output


【解决方案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)
    ...
  1. 在第 2 行,我们附加 4
  2. 在第 9 行,我们附加 2
  3. 我们致电collatz(2)
  4. 在第 2 行,我们附加 2
  5. 在第 9 行,我们附加 1
  6. 我们致电collatz(1)

请注意,我们添加了两次2!也许您应该只在函数开头附加到列表中,而不是在条件句中附加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    相关资源
    最近更新 更多