Unk*_*own 5 python recursion function list extend
这是一个非常简单的代码,代替了一个更大的问题,但我希望我可以解决它的问题.我将从第一个问题开始.
def testrecurse(z,target):
x=[]
if z<target:
z*=2
x.append(z)
x.extend(testrecurse(z,target))
return x
Run Code Online (Sandbox Code Playgroud)
这是一个测试功能,可以帮助我的大脑进行递归.它需要一个数字,然后显示两个乘法的所有乘法,直到达到目标数.所以,如果我输入:
testrecurse(1,1000)
Run Code Online (Sandbox Code Playgroud)
我收到:
[2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
Run Code Online (Sandbox Code Playgroud)
太棒了!输出看起来很干净.但这是我的问题,我很难在我的输出中追加或添加第一个值.这就是我想要输出的样子.
[1,2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
Run Code Online (Sandbox Code Playgroud)
我试过改变
x=[] to x=[z]
Run Code Online (Sandbox Code Playgroud)
但后来我收到了:
[1, 2, 2, 4, 4, 8, 8, 16, 16, 32, 32, 64, 64, 128, 128, 256, 256, 512, 512, 1024, 1024]
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,我是新来的递归,它让我头疼.
Sve*_*ach 26
这个怎么样?
def testrecurse(z, target):
if z >= target:
return []
return [z] + testrecurse(2 * z, target)
Run Code Online (Sandbox Code Playgroud)
例:
>>> testrecurse(1, 1000)
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
Run Code Online (Sandbox Code Playgroud)
请注意,它不再包含1024.如果需要,请将第三行更改为
return [z]
Run Code Online (Sandbox Code Playgroud)
当然你通常不会递归地写这个,而是使用for循环或itertools.takewhile().
| 归档时间: |
|
| 查看次数: |
20179 次 |
| 最近记录: |