python - 使用递归创建随机元素列表
问题描述
我被要求定义一个接受两个参数的递归函数:
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]
并将其连接到长度减一 ( n-1
) 的整数随机列表,它通过递归调用自身获得。
基本情况是 when 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]
推荐阅读
- javascript - 引导选项卡项链接在特定页面的主菜单中不起作用
- apache-spark - 在每个分区加入 Spark 中的 RDD 以避免洗牌
- git - 错误:未能推送一些参考 | 推送本地 git repo
- azure - Azure AD B2C - 密码更改流程
- javascript - 无法在反应应用程序中添加新的依赖项
- python - 添加多个折线图时如何更改变量名称
- c++ - 使用对话框作为主窗口。未收到 WM_INITDIALOG 消息
- javascript - 为什么我的 Android 应用程序没有在原生脚本中请求 iBeacons 的权限?
- python - Python 正则表达式中的变音符号
- linux - 没有登录铬的选项