需要两次连续的递归解释

时间:2017-10-01 08:48:04

标签: python recursion

以下代码用于查找给定列表的所有子集。

def sublist(big_list, selected_so_far):
    if big_list == []:
        print (selected_so_far)
    else:
        current = big_list[0]
        rest = big_list[1:]
        sublist(rest, selected_so_far+[current])
        sublist(rest, selected_so_far)

如果输入是“子列表([1,2,3],[])”,它将输出如下:

  1. [1,2,3]
  2. [1,2]
  3. [1,3]
  4. [1]
  5. [2,3]
  6. [2]
  7. [3]
  8. []
  9. 据我所知,对于第一次递归调用,它在1号打印行结束,但无法弄清楚第二次递归调用是如何打印出所有剩余行的。有人可以解释一下这段代码的流程吗?

0 个答案:

没有答案