gpt4 book ai didi

python - 如何修复Python递归函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:54 24 4
gpt4 key购买 nike

我正在尝试编写一个递归函数,它返回相邻元素已交换的列表的副本。例如,swapElements([2, 3, 4, 9]) 将返回 [3, 2, 9, 4]。
这是我现在的代码:

def swapElements(mylist):
if len(mylist) == 1:
pass
if len(mylist) == 2:
mylist[0], mylist[1] = mylist[1], mylist[0]
else:
mylist[0], mylist[1] = mylist[1], mylist[0]
swapElements(mylist[2:])
return mylist

当我运行这个函数时,它只返回前两个元素被交换的列表,有谁知道为什么这个函数不交换除前两个元素之外的任何其他元素以及我如何修复它?

最佳答案

在您的问题中,它表示您希望退回副本。您的函数就地改变 mylist 。此外,pass 的返回值为None。您可以像这样简化功能 -

def swap (a = []):
if len(a) < 2:
return a
else:
return [ a[1], a[0] ] + swap(a[2:])

print(swap([2, 3, 4, 9]))
# [2, 3, 4, 9]

print(swap([2, 3, 4, 9, 6]))
# [2, 3, 4, 9, 6]

print(swap([1]))
# [1]

print(swap())
# []

关于python - 如何修复Python递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57446980/

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