简单的递归失败的python

时间:2018-04-17 11:49:39

标签: python recursion

我对此感到困惑,我怀疑我犯的是一个非常微不足道的错误,但无论如何它仍然存在:

我想以递归方式填充包含元素的列表。让我们举一个简单的例子。我只想以下列方式反转列表:

y

但是onlineUsers(callback){ return this.status_database_ref.where('state','==','online').onSnapshot((querySnapshot)=>{ callback(querySnapshot.size) }) } componentDidMount(){ this.unsubscribe = firebaseService.onlineUsers(this.onUpdateOnlineUsers); console.log(this.unsubscribe) } onUpdateOnlineUsers(count){ this.setState({count}) } componentWillUnmount(){ this.unsubscribe(); } 是None,即使我在返回之前明确检查该值是否符合预期。我错过了什么?

1 个答案:

答案 0 :(得分:2)

只有递归中的最后一次调用确实返回了一些内容,其他调用都没有返回任何内容。你缺少的是将返回值传递给函数的最顶层调用,如下所示:

def recurse(x, remaining):

    if len(remaining) == 0:
        assert x == [3, 2, 1] # This does not raise????
        return x
    x.append(remaining.pop())
    return recurse(x, remaining)

x = [1, 2, 3]
y = recurse([], x)