首页 > 代码库 > php 递归01 利用递归实现按字典顺序全排列
php 递归01 利用递归实现按字典顺序全排列
最近对递归比较感兴趣,所以开始记录一些学习过程中的递归使用方法
1.全排列函数(arrange)有两个参数一个是,需要进行全排列的字符串(假设默认是按字典顺序排列),另一个则是积累的前缀如下图:
第一次默认是‘‘
第二次,在for循环后分别代表1、2、3并作为下一次子递归的前缀参数
第三次,分别为12 13 21 23 31 32至此需要全排列的剩余字符串长度为一,利用echo进行输出与return结束递归
2.deal函数也有两个参数,分别是当前全排列的字符串,和去除附加在父前缀后剩下需要进行全排列的子字符串
1 //有序数字字符串的全排列,如 123456 2 //123 3 //arrange[1,2,3] = 1.arrange[2,3] + 2.arrange[1,3] + 3.arrange[1,2] 4 //1.arrange[2,3] = 12.arrange[3] + 13.arrange[2] 5 function arrange($str,$prefix = ‘‘) { 6 /* 7 * if(!is_array($str)) { 8 * $str = str_split($str); 9 * } 10 */ 11 $str = str_split($str); 12 $len = count($str); 13 if($len === 1) { 14 echo $prefix.$str[0]."\n"; 15 return; 16 } 17 for($i = 0; $i < $len; $i ++) { 18 $tmp = $prefix.$str[$i]; 19 arrange(deal($str,$i), $tmp); 20 } 21 } 22 function deal($str, $index) { 23 unset($str[$index]); 24 return implode(‘‘,$str); 25 } 26 arrange(‘123‘)
php 递归01 利用递归实现按字典顺序全排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。