今天看到一个全方位的递归算法,觉得很巧妙。我稍微改进了函数的界面,使其更易于使用:defAllrange(lyst,start,end,result):ifstart==end:result.append(copy.copy(lyst))foriinrange(start,end+1):lyst[i],lyst[start]=lyst[start],lyst[i]Allrange(lyst,start+1,end,result)lyst[i],lyst[start]=lyst[start],lyst[i]返回结果如果python2版本没有list的浅拷贝,可以使用python3的copy模块直接调用list.copy()方法。纠结的人总是喜欢把递归变化的每一步都找出来,这样就可以在数据变化后立即输出,手动监控递归数据的变化。真的很佩服那种一写完终止条件就直接跑递归的人。我通常要练习两三轮。大家有好的办法告诉我!
