加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用递归创建随机元素列表

发布时间:2020-12-20 11:08:03 所属栏目:Python 来源:网络整理
导读:我被要求定义一个递归函数,它接受两个参数: n valmax 并返回从区间[0,valmax]中随机选取的n个数字的列表 ` import randomdef random_list(n,valmax,lst = []): """ parameters : n of type int; valmax of type int; returns : a list of n numbers picked
我被要求定义一个递归函数,它接受两个参数:

> 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,18,19,9]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读