ホームページ >バックエンド開発 >PHPチュートリアル >PHPバブルアルゴリズム(再帰実装)の詳細説明、バブル再帰_PHPチュートリアル
達成しました
関数maoPao($array, $index=0)
{
$count = count($array);
If(($count-1)
戻り $array;
for($i=$count-1; $i>$index; $i-- )
{
If($array[$i]
{
$tmp = $array[$i];
$array[$i] = $array[$i-1];
$array[$i-1] = $tmp;
}
}
$index++;
maoPao($array, $index)を返します;
//return maoPao($array, $index++);
}
$arr = 配列(12,4,3,1,9,5,6,8,7);
var_dump(maoPao($arr));
結果:
この実装を試みたときに問題が発生しましたが、まだ解決されていません。
こちら:
最初に $index++ の代わりに 3 行目を直接使用し、次に ruturn を使用すると、無限ループに入ります。関数の先頭で $index を出力すると、どちらも 0 になります。これは、パラメーターがその後の再帰関数に渡されることを意味します。 $index++ は、本来の $index++ ではありません (つまり、$index=$index+1)。
maoPao($array, $index++) は $index++; return maoPao($array, $index); を記述するための短い方法ではないでしょうか? なぜ 2 つの結果が異なるのでしょうか?
********************/
答え:
echo $index.'
' //結果は 2
;
echo $m.'
'; //結果は 1 です。ポストインクリメントであるため、最初に $index=1 が $m に割り当てられ、その後 $index が 1 ずつ増加します。 ;
$インデックス = 1;
echo $index.'
' //結果は 2
;
echo $n; //結果は 2 です。これは事前インクリメントであるため、$index+1 の演算が最初に実行され、次に $n;
http://www.bkjia.com/PHPjc/909346.html