第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用遞歸實現(xiàn)這段 python 代碼?

如何使用遞歸實現(xiàn)這段 python 代碼?

慕的地8271018 2022-10-05 17:51:30
我試圖通過在遞歸函數(shù)中傳遞for循環(huán)的數(shù)量來找到一種遞歸方式:def non_recursive():  combinations = []  for i in range(2): # first character    for j in range(2): # second character      for k in range(2): # third character        combinations.append([i, j, k])  return combinationsprint(non_recursive())輸出:[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]在這個例子中,使用了 3 個for循環(huán)。遞歸方式的函數(shù)原型應如下所示:def recursive(number_of_iterations): # number of iterations = length of each list  # implementation goes here!作為一個初學者,我不知道如何處理這個問題。如果有人可以幫助我真的很感激!
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

您必須將 recursive(n-1) 的每個結果與 [0] 和 [1] 結合起來:


這是一個使用兩級列表理解的示例:


def recursive(n):

    if n == 1: return [[0],[1]]

    return [ r+[b] for r in recursive(n-1) for b in [0,1] ]



print(recursive(3))


# [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]

然而,這些類型的組合函數(shù)通常被定義為生成器,這樣就可以處理結果,而不必在一個大列表中生成和存儲所有值:


def recursive(n):

    if n == 1:

        yield [0]

        yield [1]

    else:

        for r in recursive(n-1):

            yield r+[0]

            yield r+[1]


for combo in recursive(3): print(combo)

[編輯]您可以通過提供(可變)范圍大小作為參數(shù)來進一步概括這一點:


def multiRange(n,*rest):

    for i in range(n):

        for r in multiRange(*rest) if rest else [tuple()]:

            yield (i,)+r

輸出:


for x,y,z in multiRange(2,3,2):

    print((x,y,z))


(0, 0, 0)

(0, 0, 1)

(0, 1, 0)

(0, 1, 1)

(0, 2, 0)

(0, 2, 1)

(1, 0, 0)

(1, 0, 1)

(1, 1, 0)

(1, 1, 1)

(1, 2, 0)

(1, 2, 1)

這對于獲取多維矩陣(或列表列表)的所有坐標很有用


對于您的特定示例,它可以與參數(shù)解包一起使用:


for combo in multiRange(*[2]*3): print(combo)


(0, 0, 0)

(0, 0, 1)

(0, 1, 0)

(0, 1, 1)

(1, 0, 0)

(1, 0, 1)

(1, 1, 0)

(1, 1, 1)


查看完整回答
反對 回復 2022-10-05
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號