如何使用递归垂直打印列表?

How to print list vertically using recursion?

我想递归地垂直打印这个列表: 示例:

print_list(['hi', [22,45], 'dog', 21])

预计:

hi
[22, 45]
dog
21

这是我的代码:

def print_list(n_list):
    if len(n_list) == 0:
            return
    else:
        half = len(n_list) // 2
        for i in range(half):
            if half == 2:
                print (n_list[i], sep = "\n")
        else:
            print (n_list[half+i])

这是我得到的:

hi
[22, 45]
dog

我不确定为什么列表没有打印完整。这也适用于包含更多项目的列表,仅显示一部分。我知道我在打印语句中弄乱了一些东西,但无法弄清楚...

这个函数不是你想要的结果吗?

def print_list(n_list):
    for item in n_list:
        print(item)

我不确定为什么你只尝试迭代列表的一半half = len(n_list) // 2

n_list = ['hi', [22,45], 'dog', 21]
print(*n_list, sep='\n')

给予

hi
[22, 45]
dog
21

你很接近,但你没有应用缩减,因为你的函数没有调用自身。这是您的代码的略微修改版本,应该可以工作:

def print_list(n_list):
  if len(n_list) == 0:
    return
  else:
    half = (len(n_list) + 1) // 2

    # Print elements in the first half:
    for i in range(half):
      print(n_list[i])

    # Print second half using recursion:
    print_list(n_list[half:])