在列表操作方面递归思考

时间:2015-10-10 06:11:41

标签: python recursion python-3.4

from random import *

def Number(N):
    if N>0:
        return [ choice( [0,1] ) for i in range(N)]
    else:
        return ("Only Positive #'s!")

我如何以递归方式执行此操作?

我们说N=5,因此每个#的[0,1,2,3,4]将替换为01。我似乎无法以递归的方式绕过这个列表操作。

1 个答案:

答案 0 :(得分:1)

这是一个选项:

from random import choice  # don't use * imports

def Number_recursive(N):
    if N < 0:
        raise ValueError('N must be positive')
    if N == 0:
        return []
    return [choice((0, 1))] + Number_recursive(N-1)

注意引发错误而不是返回字符串;这会更直接地告诉来电者出错了。