我被要求定义一个包含两个参数的递归函数:n
valmax
并返回从间隔n
中随机选取的[0 , valmax]
个数的列表
`
import random
def random_list(n, valmax, lst = []):
"""
parameters : n of type int;
valmax of type int;
returns : a list of n numbers picked randomly from the interval
[0, valmax]
"""
if len(lst) == n:
return lst
return [random.randint(0, valmax)] + random_list(n, valmax)
print(random_list(10,100))`
但是,我得到一个
递归错误
如何修复我的代码,以便它返回一个间隔
n
内带有[0, valmax]
随机数的列表? 最佳答案
你的逻辑是错误的。您需要每个函数调用返回n
随机整数,所以不需要在列表中传递它。
每个函数在[0, valmax]
范围内生成一个随机数,并将其连接到长度小于1的整数随机列表(n-1
),该列表是通过递归调用自身获得的。
基本情况是当n == 1
时,在这种情况下,我们返回一个空列表。
import random
def random_list(n, valmax):
if n == 0:
return []
return [random.randint(0, valmax)] + random_list(n-1, valmax)
还有一个测试:
random_list(10, 20)
#[20, 9, 4, 7, 3, 4, 3, 18, 19, 9]