递归时引发的问题

时间:2021-08-31 16:42:36

今天练习递归,想扩展一下结果时,遇到一个问题

 

L=[[1,3,4],9,[[4,6],8],[[[2,5],7],8],10]


def fn(li):
    l=[]
    for x in li:
        if type(x) is list:
            fn(x)
        else:
            print(x)
            l.append(x)
    print(l)
    
fn(L)    
        

本来希望结果是输出:

1
3
4
9
4
6
8
2
5
7
8
10
[1,3,4,9,4,6,8,2,5,7,8,10]

结果却是这样

1
3
4
[1, 3, 4]
9
4
6
[4, 6]
8
[8]
2
5
[2, 5]
7
[7]
8
[8]
10
[9, 10]

一时还想不明白记录一下吧

 问题找到了,应该还是对递归没深入理解,在进入递归函数后,[]又重新创建一个新的变量,正确的方法是:

L=[[1,3,4],9,[[4,6],8],[[[2,5],7],8],10]

l=[]
def fn(li):

    for x in li:
        if type(x) is list:
            fn(x)
        else:
            print(x)
            l.append(x)


    

fn(L)
print(l)

递归从形象上可以理解成视频会议中某种图像回环吧