ホームページ >バックエンド開発 >PHPチュートリアル >PHPバブルアルゴリズム(再帰実装)の詳細説明、バブル再帰_PHPチュートリアル

PHPバブルアルゴリズム(再帰実装)の詳細説明、バブル再帰_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:14:291100ブラウズ

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));

結果:

コードをコピーします コードは次のとおりです:

配列 ( [0] => 1 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 [8] => 12)
質問:

この実装を試みたときに問題が発生しましたが、まだ解決されていません。

こちら:

コードをコピーします コードは次のとおりです:
$index++;
return maoPao($array, $index);
//return maoPao($array, $index++);
/******************

最初に $index++ の代わりに 3 行目を直接使用し、次に ruturn を使用すると、無限ループに入ります。関数の先頭で $index を出力すると、どちらも 0 になります。これは、パラメーターがその後の再帰関数に渡されることを意味します。 $index++ は、本来の $index++ ではありません (つまり、$index=$index+1)。 maoPao($array, $index++) は $index++; return maoPao($array, $index); を記述するための短い方法ではないでしょうか? なぜ 2 つの結果が異なるのでしょうか?
********************/


追加:

答え:

コードをコピーします コードは次のとおりです:
$index++ と ++$index の違いは、$index++ はポストインクリメントと呼ばれ、++$index はプレインクリメントと呼ばれますが、$index の最終結果は常に +1 になることです。 ただし、変数を渡す場合には違いがあります。

$インデックス = 1; $m = $index++;

echo $index.'
' //結果は 2
; echo $m.'
'; //結果は 1 です。ポストインクリメントであるため、最初に $index=1 が $m に割り当てられ、その後 $index が 1 ずつ増加します。 ;

$インデックス = 1;

$n = ++$index;

echo $index.'
' //結果は 2
; echo $n; //結果は 2 です。これは事前インクリメントであるため、$index+1 の演算が最初に実行され、次に $n;


これは覚えにくいかもしれないので、使用するときは注意する必要があります。上記の質問では、$index が値 0 を無限に渡して再帰をロックさせるこの問題を無視しました。

http://www.bkjia.com/PHPjc/909346.html

tru​​ehttp://www.bkjia.com/PHPjc/909346.html技術記事 PHP バブル アルゴリズム (再帰的実装) の詳細な説明、バブル再帰的実装のコピー コード コードは次のとおりです。 /* バブル アルゴリズム (再帰的実装) */ function maoPao($array, $index=0) { $count = count($array) ) ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。