python - 递归调用时,我的列表不会自行清除
问题描述
我刚开始学习 Python,并在观看了 Veritasium 在 YouTube 上的视频,标题为“无人能解决的最简单的数学问题”后想尝试一下
本质上:
如果 x 是偶数,将 x 除以 2
如果 x 是奇数,乘以 3 然后加 1
不断重复直到 x = 1
所以我写了这段代码来获取一系列数字的结果列表
val = int(input("Enter a Number"))
def threexplus1(x, count = 1, mylist=[]):
if x == 1:
mylist.append(x)
return count, mylist
elif x%2==0:
mylist.append(x)
return threexplus1(int(x/2), count+1)
else:
mylist.append(x)
return threexplus1(int(x*3+1), count+1)
for x in range (1,val+1):
print (x)
print (threexplus1(x))
输入
4
我想要的输出不是我希望的输出
当前输出:
Enter a Number 4
1
(1, [1])
2
(2, [1, 2, 1])
3
(8, [1, 2, 1, 3, 10, 5, 16, 8, 4, 2, 1])
4
(3, [1, 2, 1, 3, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1])
我想要的输出:
Enter a Number 4
1
(1, [1])
2
(2, [2, 1])
3
(8, [3, 10, 5, 16, 8, 4, 2, 1])
4
(3, [4, 2, 1])
我想知道为什么 mylist 在递归调用时不会刷新/清除自身?
解决方案
推荐阅读
- c# - 如何使用本身具有自定义序列化的 ISerializable 字段在对象中实现 GetObjectData?
- android-studio - 错误:任务“:app:transformClassesWithDexForDebug”执行失败。以非零退出值 3 结束
- jquery - 在第一个 div 周期后回调不动作
- linux - 上传/Arduino 出错:Ubuntu 16.04 上的权限被拒绝
- kubernetes - 在 lxc 容器中的 kubernetes 集群中创建 master 时出错
- php - 您是否应该将用户登录详细信息存储在与您的网站相同的数据库中?
- python - 生成器上的 for 循环第一次迭代
- common-lisp - 为什么在 case/ecase 中不能匹配 nil?
- javascript - 在 Node.js 中使用 Azure SendGrid 发送电子邮件
- timeout - 如何更改 Frameworkium 中的等待超时 - 全局