如何递归附加到一个空列表?
How to recursively append to an empty list?
我是递归的新手,发现它很难掌握。如果我不能直接“触摸”它,我不知道如何附加一个空数组。如果它是一个字符串,我每次都会添加该值。如果是一个数字涉及乘法,我每次都可以乘,但是有了数组,我不知道该怎么办。
我不知道如何在无法直接“触摸”它的情况下追加到空数组。
这是我目前所做的:
def laugh(num):
if num == 0:
return []
# This doesnt work since we can't append a function call. I'm unsure what to do.
return laugh(num - 1).append("ha ")
打印(笑(3))-> [“哈,哈,哈”]
如果我可以 return 一串“Ha”来代替的话,我会很容易做到这一点。我可以 return 一个空字符串,然后为每个步骤添加一个“Ha”。
在这种情况下,您将通过在其上调用 append 来改变列表。你想要做的是 return 一个 new list:
def laugh(num):
# base case
if num == 0:
return []
# recursive case
return ["ha"] + laugh(num-1)
你可以这样修改:
def laugh(num):
if num == 0:
return []
haha = laugh(num-1)
haha.append("ha")
return haha
由于append
没有return 修改后的列表,您必须分两步完成。使用串联和三元运算符,您可以将其缩小为:
def laugh(num):
return laugh(num-1) + ["ha"] if num else []
我是递归的新手,发现它很难掌握。如果我不能直接“触摸”它,我不知道如何附加一个空数组。如果它是一个字符串,我每次都会添加该值。如果是一个数字涉及乘法,我每次都可以乘,但是有了数组,我不知道该怎么办。
我不知道如何在无法直接“触摸”它的情况下追加到空数组。
这是我目前所做的:
def laugh(num):
if num == 0:
return []
# This doesnt work since we can't append a function call. I'm unsure what to do.
return laugh(num - 1).append("ha ")
打印(笑(3))-> [“哈,哈,哈”]
如果我可以 return 一串“Ha”来代替的话,我会很容易做到这一点。我可以 return 一个空字符串,然后为每个步骤添加一个“Ha”。
在这种情况下,您将通过在其上调用 append 来改变列表。你想要做的是 return 一个 new list:
def laugh(num):
# base case
if num == 0:
return []
# recursive case
return ["ha"] + laugh(num-1)
你可以这样修改:
def laugh(num):
if num == 0:
return []
haha = laugh(num-1)
haha.append("ha")
return haha
由于append
没有return 修改后的列表,您必须分两步完成。使用串联和三元运算符,您可以将其缩小为:
def laugh(num):
return laugh(num-1) + ["ha"] if num else []