全排列解读(递归)

目前只学到递归
先了解一下全排列原理

下面是过程解读(解读部分的内容是我自创的,便于理解的一种表达方式,不包含字典序,不是代码,不能在编译器运行。)
在这里插入图片描述在这里插入图片描述
(注意字体颜色的标注)

整体第一次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。

以上内容仅为个人理解,如有错误之处,还请指出。
目前本人仅学到递归,等学到字典序可能还会更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值