Python 代码打印的是无,而不是不同的排列
这里的程序是用python编写的,用于打印输入的不同排列。 例如 输入:Python 代码打印的是无,而不是不同的排列,python,return,permutation,Python,Return,Permutation,这里的程序是用python编写的,用于打印输入的不同排列。 例如 输入:[1,2,3] 输出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] 代码 def swap(a,b): temp=a a=b b=temp return a,b def permut(z,l,n): if l==n: return (z) else: for i in range(l,n):
[1,2,3]
输出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]
代码
def swap(a,b):
temp=a
a=b
b=temp
return a,b
def permut(z,l,n):
if l==n:
return (z)
else:
for i in range(l,n):
swap(z[l],z[i])
permut(z,l+1,n)
swap(z[l],z[i])
p=[1,2,3]
t=permut(p,0,3)
print(t)
我没有得到理想的输出,而是在操作代码中得到了None
错误
- 由于参数是不可变的(在本例中为数字),swap函数将无法在适当的位置交换a、b的值
- 您没有聚合找到的排列
def permut(a, k=0, results=None):
# results array will store the permutations found
if results is None:
results = []
if k == len(a): # using len(a) means we don't need the argument n in OP code
results.append(a[:])
else:
for i in range(k, len(a)):
a[k], a[i] = a[i] ,a[k] # swap values
permut(a, k+1, results)
a[k], a[i] = a[i], a[k] # swap back
return results
测试
p = [1,2,3]
t = permut(p) # using default k = 0
print(t)
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]]
输出
p = [1,2,3]
t = permut(p) # using default k = 0
print(t)
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]]
我认为您没有返回任何内容,因此变量
t
将获得None
作为函数,而不使用任何return语句返回None
,因为参数是不可变的(本例中为数字),所以swap
函数将无法在适当的位置交换a、b的值。