簡體   English   中英

循環中的Python遞歸函數

[英]Python Recursive function from loop

我創建了一個打印所有n位長的二進制序列的函數:

def print_binary_sequences(n):
    if n<1:
        return
    for i in range(2**n):
        s = bin(i)[2:]
        s = "0" * (n-len(s)) + s
        print(s)

它工作得很好,但是我完全錯過了使用遞歸來完成任務的任務。 我已經嘗試了很長時間,以此創建一個遞歸函數,但失敗了。 有什么幫助嗎?

如果只需要print組合,則可以執行以下操作:

def binary_rec(n, data=''):
    if len(data) == n:
        print data
    else:
        binary_rec(n, data + '0')
        binary_rec(n, data + '1')

基本上,它將以一個空的解決方案data = ''開頭,並將遞歸地使用2個新的solucions data = data + '0'data = data + '1'調用。 它將遞歸地瀏覽這兩個選項,直到存儲的結果( data )的長度為n為止。

>>> binary_rec(2)
00
01
10
11

如果您要return所有可能的組合以供將來使用,則需要進行一些細微的更改(您可以輕松更改上述邏輯)。

另外,您可以輕松地修改上面的內容以返回01列表(即data=[]初始參數和data + [0]更新)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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