[英]Using recursion to generate a list of X random numbers between 0 and 100, sorted from low to high in Python?
我正在嘗試編寫一個程序,該程序使用遞歸生成 0 到 100 范圍內的 X 隨機數列表,然后將它們從低到高排序。 這是我迄今為止編寫的代碼:
import random
def multiCaller(x):
if x == 0:
return "Enter valid number"
else:
return random.randint(0, 100) + multiCaller(x)
multiCaller.sort()
return multiCaller(x)
這崩潰了,我不知道從哪里開始。 我理想的輸出看起來像這樣。 假設我輸入multiCaller(4)
:我的程序理想情況下會生成類似[3, 35, 45, 82]
。 如果我輸入multiCaller(5)
,我會得到類似[1, 2, 45, 56, 99]
,等等。 任何幫助都將不勝感激!
為了遞歸地實現你所說的,你需要首先尊重基本情況,即當要求長度為零的隨機數列表時,你需要返回一個空列表。 如果 x 不為零,那么您需要創建一個帶有單個隨機數的列表,並使用 x-1 遞歸調用相同的函數並將它們連接起來,以便生成一個帶有 x 個隨機數的列表
import random
def multiCaller(x):
if x == 0:
return []
else:
return [random.randint(0, 100)] + multiCaller(x-1)
def get_list(x):
res = multiCaller(x)
res.sort()
return res
print get_list(5)
這是一種方法:
import random
def multiCaller(x):
if x == 0:
return []
else:
result = multiCaller(x-1)
result.append(random.randint(0, 100))
return result
def sortedMultiCaller(x):
result = multiCaller(x)
result.sort()
return result
print sortedMultiCaller(5)
遞歸是通過請求一個x-1
大小的列表然后在末尾添加一個隨機整數來處理的。 如果您要求一個 0 大小的列表,那么它只會給您一個空列表。 除非這是某種家庭作業問題,但我建議只是像這樣列出理解:
import random
def multiCaller(x):
return [random.randint(0, 100) for _ in range(x)]
def sortedMultiCaller(x):
result = multiCaller(x)
result.sort()
return result
print sortedMultiCaller(5)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.