zoukankan      html  css  js  c++  java
  • 递归时引发的问题

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

    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)

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

  • 相关阅读:
    hadoop
    spark
    docfetcher
    redis参考资料
    Redis系列-存储篇sorted set主要操作函数小结
    predis操作大全
    composer安装使用
    寒假作业2
    寒假作业随笔
    面向对象寒假作业编程题
  • 原文地址:https://www.cnblogs.com/sike8/p/11057572.html
Copyright © 2011-2022 走看看