[英]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
所有可能的組合以供將來使用,則需要進行一些細微的更改(您可以輕松更改上述邏輯)。
另外,您可以輕松地修改上面的內容以返回0
和1
列表(即data=[]
初始參數和data + [0]
更新)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.