采用汇编编写递归算法。
其实这种东西直接写嵌套循环效率会更高,因为递归调用开销比较大了。但直接写嵌套循环的话,代码看起来比较壮观,而且也不够灵活。
这份代码的M选N核心算法非常精简。
.版本 2
.子程序 M选N, , , by 凌晨孤星
.参数 M, 整数型
.参数 N, 整数型
.参数 回调函数地址, 整数型
.参数 索引组, 字节型, 数组
.局部变量 combination, 字节集
combination = { 85, 139, 236, 255, 77, 8, 129, 125, 12, 17, 17, 17, 17, 125, 47, 255, 69, 12, 185, 34, 34, 34, 34, 3, 77, 8, 139, 85, 12, 136, 17, 131, 125, 8, 0, 117, 10, 184, 51, 51, 51, 51, 81, 255, 208, 235, 13, 184, 68, 68, 68, 68, 255, 117, 12, 255, 117, 8, 255, 208, 235, 200, 93, 194, 8, 0 }
置入代码 ({ 139, 77, 252, 131, 193, 8, 139, 69, 8, 137, 65, 9, 139, 69, 20, 139, 0, 131, 192, 8, 137, 65, 19, 139, 69, 16, 137, 65, 38, 137, 73, 48, 106, 0, 255, 117, 12, 255, 209 })
附件内附的.e文件里有对应的汇编代码,也有这个M选N函数算法的纯易代码版本,方便对代码进行分析。
|