目前只学到递归
先了解一下全排列原理
下面是过程解读(解读部分的内容是我自创的,便于理解的一种表达方式,不包含字典序,不是代码,不能在编译器运行。)
(注意字体颜色的标注)
整体第一次for循环
for(i=k=1;)
{a[k]=a[i]=1;
t=a[k];a[k]=a[i];a[i]=t;
p函数(a;k+1=2;m)
{ 此时 for(i=k=2;i<m)
{a[k]=a[i]=2;
t=a[k];a[k]=a[i];a[i]=t;
p函数(a;k+1=3;m)->(a;3;m)
{此时 因为k=m=3;执行if语句,输出123}
t=a[k];a[k]=a[i];a[i]=t;(这是将上面交换的数字换回原顺序)
}
{ (i++;使i=3; 则a[k]=a[2]=2; a[i]=a[3]=3;)
t=a[k];a[k]=a[i];a[i]=t;(此时数列a为132)
p函数(a,i=3,m) 执行if语句输出132
t=a[k];a[k]=a[i];a[i]=t;(这是将上面交换的数字换回原顺序,此时数列a为123)
}
}
t=a[k];a[k]=a[i];a[i]=t;(这是将上面交换的数字换回原顺序)
}
然后整体第二次for循环
for(i++; 既i=2)(和整体第一次for循环一样操作)
。。。直到整体i=m。
以上内容仅为个人理解,如有错误之处,还请指出。
目前本人仅学到递归,等学到字典序可能还会更新。