递归时引发的问题

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

 

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)

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

转载于:https://www.cnblogs.com/sike8/p/11057572.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值