【问题标题】:Recursive function: "NoneType object is not iterable"递归函数:“NoneType 对象不可迭代”
【发布时间】:2015-01-14 16:37:37
【问题描述】:

我试图理解递归函数,为了做到这一点,我觉得我需要为自己创建一个更小的示例。但是,我自己的代码向我抛出了 NoneType 错误。我的函数并没有真正的目的,我只是想知道为什么会发生错误?

def recursive(seq):
    if not seq:
        return [seq]
    else:
        seq2=seq[1:]
            print('seq2= ',seq2)
            print('Type seq2 = ',type(seq2))
        for i in recursive(seq2):
            print('hi')

输入:

recursive('123')

输出:

seq2=  23
Type seq2 =  <class 'str'>
seq2=  3
Type seq2 =  <class 'str'>
seq2=  
Type seq2 =  <class 'str'>
hi
Traceback (most recent call last):
    File "<pyshell#12>", line 1, in <module>
        recursive('123')
    File "C:/Python34/myreqursive(del).py", line 8, in recursive
        for i in recursive(seq2):
    File "C:/Python34/myreqursive(del).py", line 8, in recursive
        for i in recursive(seq2):
TypeError: 'NoneType' object is not iterable

【问题讨论】:

    标签: python python-3.x recursion nonetype


    【解决方案1】:

    您的else 分支不会返回任何内容,因此会给出默认返回值None

    不仅仅是打印,至少返回递归结果:

    def recursive(seq):
        if not seq:
            return [seq]
        else:
            seq2=seq[1:]
            print('seq2= ',seq2)
            print('Type seq2 = ',type(seq2))
            recursive_result = recursive(seq2)
            for i in recursive_result:
                print('hi')
            return recursive_result
    

    【讨论】:

    • 哦,对不起。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2016-02-08
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2012-08-25
    相关资源
    最近更新 更多