【发布时间】:2020-11-19 04:47:22
【问题描述】:
这开始是练习一些 Python 编程的简单练习,但我无法修复我的逻辑缺陷!
目标很简单。给定一个预定大小的数组,我需要构建数组大小的所有可能的二进制排列。另一个复杂的问题是,特定的数组索引已经设置,因此无需生成多个排列。
举个具体的例子:
n=3
arr = [None]*n
arr[0] = 0
二进制排列的结果列表应该是:[0, 0, 0],[0, 0, 1],[0, 1, 0],[0, 1, 1]
我的代码正在返回:[0, 0, 0],[0, 0, 1],[0, 1, 1]
所以我可以清楚地看到它没有创建进一步的排列(因为这个问题只会随着更大的数组大小而加剧)。不幸的是,我不明白为什么它没有生成最后一个排列。
这是我用来生成和打印二进制字符串的代码:
def arrayPrint(arr, n):
for i in range(0, n):
print(arr[i], end=" ")
print()
def binaryStringGen(n, arr, i):
if i == n:
arrayPrint(arr, n)
return
if (arr[i] == None):
arr[i] = 0
binaryStringGen(n, arr, i + 1)
arr[i] = 1
binaryStringGen(n, arr, i + 1)
else:
binaryStringGen(n, arr, i + 1)
任何帮助理解这一点将不胜感激!
【问题讨论】:
标签: arrays python-3.x binary