簡體   English   中英

使用遞歸生成0到100之間的X個隨機數列表,在Python中從低到高排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM