python的这段程序该怎么理解,没看懂 5
defperm(list,k,m):ifk==m:foriinrange(m+1):printlist[i]printelse:foriinrange(k,m+1):li...
def perm(list,k,m):
if k==m:
for i in range(m+1):
print list[i]
print
else:
for i in range(k,m+1):
list[k],list[i]=list[i],list[k]
perm(list,k+1,m)
list[k],list[i]=list[i],list[k]
mylist=input("input a list([1,2,3...]):")
perm(mylist,0,len(mylist)-1) 展开
if k==m:
for i in range(m+1):
print list[i]
else:
for i in range(k,m+1):
list[k],list[i]=list[i],list[k]
perm(list,k+1,m)
list[k],list[i]=list[i],list[k]
mylist=input("input a list([1,2,3...]):")
perm(mylist,0,len(mylist)-1) 展开
2个回答
展开全部
倒序显示一个list的后半部分。显示完成后,list保持原状。
这是一个递归调用的一个练习题。
象是玩牌似的。先把首尾交换。然后递归调用里面一层,然后再把首尾换回来。
递归调用直到中间那个数,这里将整个LIST的前半部分(此时是倒序的原来的后半部分)打印出来。
这样的交换策略应用到从1到结尾的每一个输入的序列。
这是一个递归调用的一个练习题。
象是玩牌似的。先把首尾交换。然后递归调用里面一层,然后再把首尾换回来。
递归调用直到中间那个数,这里将整个LIST的前半部分(此时是倒序的原来的后半部分)打印出来。
这样的交换策略应用到从1到结尾的每一个输入的序列。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出一个给定list的所有元素的排列组合
你把代码修改下:
def perm(list,k,m):
if k==m:
#for i in range(m+1):
print list[:m+1]
#print
else:
for i in range(k,m+1):
list[k],list[i]=list[i],list[k]
perm(list,k+1,m)
list[k],list[i]=list[i],list[k]
mylist=input("input a list([1,2,3...]):")
perm(mylist,0,len(mylist)-1)
这样看结果就比较清楚了
你把代码修改下:
def perm(list,k,m):
if k==m:
#for i in range(m+1):
print list[:m+1]
else:
for i in range(k,m+1):
list[k],list[i]=list[i],list[k]
perm(list,k+1,m)
list[k],list[i]=list[i],list[k]
mylist=input("input a list([1,2,3...]):")
perm(mylist,0,len(mylist)-1)
这样看结果就比较清楚了
更多追问追答
追问
还不是很清楚。。。list[k],list[i]=list[i],list[k]调换位子是什么作用,还有当k=m时,打印,但是感觉每次的m都没变
追答
怎么会不变呢?
第一次当你输入list是[0,1]的时候, k=0,m=1,这个时候就交换啊
第二次调用perm的时候k=m就输出交换后的list啊
list[k],list[i]=list[i],list[k]调换位子的目的就是为了能够生成不同的排列组合啊
不换位置哪里来的排列组合?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询