ホームページ >バックエンド開発 >PHPチュートリアル >PHP は文字列の完全な配置を実現するために再帰を使用しますか?解決方法

PHP は文字列の完全な配置を実現するために再帰を使用しますか?解決方法

WBOY
WBOYオリジナル
2016-06-13 12:22:371704ブラウズ

PHP は文字列の完全な配置を実現するために再帰を使用しますか?
プログラム内で文字列の印刷の完全な配置を実現したいのですが、コードは次のとおりです

<br />function output ($src_arr)<br />{<br />    foreach ($src_arr as $key => $value) {<br />        $temp_arr = $src_arr;<br />        echo $value;<br />        if (! empty($temp_arr)) {<br />            array_splice($temp_arr, $key, 1);<br />            output($temp_arr);<br />            return;<br />        } else {<br />            echo "<br/>";<br />            return;<br />        }<br />    }<br />}<br /><br />$str = 'abc';<br />$src_arr = str_split($str);<br />output($src_arr);



ですが、結果はabcを印刷するだけです。理由は、問題ないと思います。アドバイスをお願いします。
------解決策----------------------
$a = array(1,2,3);<br />perm($a, 0, count($a)-1);<br /><br />function perm($ar, $k, $m) {<br />  if($k == $m) echo join('',$ar), PHP_EOL;<br />  else {<br />    for($i=$k; $i<=$m; $i++) {<br />      swap($ar[$k], $ar[$i]);<br />      perm($ar, $k+1, $m);<br />    }<br />  }<br />}<br />function swap(&$a, &$b) {<br />  $c = $a;<br />  $a = $b;<br />  $b = $c;<br />}
オリジナルを渡すと配列
$a = array(1,2,3);<br />perm($a, 0, count($a)-1);<br /><br />function perm(&$ar, $k, $m) {<br />  if($k == $m) echo join('',$ar), PHP_EOL;<br />  else {<br />    for($i=$k; $i<=$m; $i++) {<br />      swap($ar[$k], $ar[$i]);<br />      perm($ar, $k+1, $m);<br />      swap($ar[$k], $ar[$i]);<br />    }<br />  }<br />}<br />function swap(&$a, &$b) {<br />  $c = $a;<br />  $a = $b;<br />  $b = $c;<br />}
については、この考えはあなたの考えよりも明確ですよね? (移植された C コード)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。