我被要求定义一个递归函数,它接受两个参数:
> n
> valmax
并返回从区间[0,valmax]中随机选取的n个数字的列表
`
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))`
但是,我得到了一个
RecursionError
如何修复我的代码,使其在区间[0,valmax]中返回一个包含n个随机数的列表?
最佳答案 你的逻辑错了.您需要每个函数调用返回n个随机整数,因此您不需要在列表中传递它.
每个函数在[0,valmax]范围内生成一个随机数,并将其连接到整数的随机列表,该整数的长度减去一个(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]