gpt4 book ai didi

python - 递归函数和列表追加/扩展

转载 作者:太空狗 更新时间:2023-10-30 00:20:47 24 4
gpt4 key购买 nike

这是一个非常简单的代码,而不是一个更大的问题,但我希望我能分块解决它。我将从我的第一个问题开始。

def testrecurse(z,target):
x=[]
if z<target:
z*=2
x.append(z)
x.extend(testrecurse(z,target))
return x

这是一个测试函数,可以帮助我的大脑理解递归。它需要一个数字,然后显示两个的所有乘法,直到它达到目标数字。所以如果我输入:

testrecurse(1,1000)

我收到:

[2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

太棒了!输出看起来干净整洁。但这是我的问题,我很难在输出中附加或添加第一个值。这是我希望输出的样子。

[1,2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

我试过改变

x=[] to x=[z]

然后我收到:

[1, 2, 2, 4, 4, 8, 8, 16, 16, 32, 32, 64, 64, 128, 128, 256, 256, 512, 512, 1024, 1024]

任何帮助将不胜感激,我是递归的新手,这让我很头疼。

最佳答案

这个怎么样?

def testrecurse(z, target):
if z >= target:
return []
return [z] + testrecurse(2 * z, target)

例子:

>>> testrecurse(1, 1000)
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]

请注意,它不再包含 1024。如果你想要这个,把第三行改成

        return [z]

当然,您通常不会递归地编写此代码,而是使用 for 循环或 itertools.takewhile()

关于python - 递归函数和列表追加/扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896951/

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