gpt4 book ai didi

python - 使用递归追加到列表python

转载 作者:行者123 更新时间:2023-12-01 02:25:14 25 4
gpt4 key购买 nike

我用python2编写了一个递归程序来获得数字的乘法持久性;这是你必须将一个数字中的数字相乘直到达到一位数的次数。我还想将所有连续的乘法存储在列表中。

import operator
def persistence(n, count = []):
n = list(str(n))
if len(n) == 1:
return len(count)
else:
n = list(map(int, n))
n = reduce(operator.mul, n)
count.append(n)
return persistence(n)

该代码适用于第一个函数调用,但它不会将计数列表重置为空列表,而是保留先前获取的任何值。

对于第一个函数调用:

persistence(39)

输出为 3。这是预期的输出。但是,当进行另一个函数调用时:

persistence(4)

它不是输出 0,而是输出 3;这是第一个函数调用的结果。

我认为问题出在全局列表上。我尝试在函数内声明列表,但它只是在每次递归调用时不断将列表重置为空。任何人都可以帮忙吗?

最佳答案

您遇到了常见的“可变默认参数”问题。

固定代码:

import operator
def persistence(n, count=None):
if count is None:
count = []
n = list(str(n))
if len(n) == 1:
return len(count)
else:
n = list(map(int, n))
n = reduce(operator.mul, n)
count.append(n)
return persistence(n, count) # pass in the list

调用:

print persistence(39)
print persistence(4)

产品:

3
0

关于python - 使用递归追加到列表python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com