PHPで再帰的ソートを実装する方法

藏色散人
リリース: 2018-12-14 09:51:02
オリジナル
6274 人が閲覧しました


この記事では主に、PHP 再帰ソートPHP 再帰アルゴリズム の 3 つの実装方法を紹介します。

PHPで再帰的ソートを実装する方法

再帰アルゴリズムは、プログラマなら誰でもよく知っているはずです。なぜなら、再帰の概念は、PHP 言語であっても、Java などの他のプログラミング言語であっても、ほとんどのアルゴリズムの核心だからです。

PHP の初心者にとって、再帰アルゴリズムの実装原理は理解しにくいかもしれません。ただし、このアルゴリズムの原理を理解して習得していれば、再帰アルゴリズムを柔軟に使用して、無限分類などのさまざまな関数をプログラミングで実装できます。再帰は、初心者が最も習得する必要がある基本的なアルゴリズム スキルでもあります。

では、再帰とは正確には何でしょうか?

再帰は、実際には、関数自体が直接または間接的にそれ自体を呼び出すプログラミング メソッドです。これは、ループと非常によく似ていますが、再帰的です。 call 関数内に終了条件、つまり繰り返し実行処理を抜け出す条件がないと無限ループになってしまいます。

以下では、PHP 再帰アルゴリズム PHP 再帰ソート の 3 つの実装方法を、具体的なコード例を通して紹介します。

方法 1: 静的変数

<?php
function call(){
    static $i=1;
    echo  $i.&#39;<br>&#39;;
    $i++;
    if ($i<=10){
        call();
    }
}
call();
ログイン後にコピー

この方法では、主に static を使用して静的変数を定義し、再帰的並べ替えを実装します。上記のように、callメソッドと静的変数$iを定義しましたが、$i変数に判定を加えずに直接実行すると、当然ながら無限ループが発生します。

そこで、ここに if 条件判定文を追加します。最後に、ループ内で独自のメソッドを呼び出します。結果は次の図に示すようになります。

PHPで再帰的ソートを実装する方法

#図に示すように、静的変数を使用する効果は次のとおりです。再帰的なソートを実現します。

方法 2: グローバル変数

$i=1;
function call(){
    global $i;
    echo $i;
    $i++;
    if($i<=10){
        call();
    }
}
call();
ログイン後にコピー

この方法では、主にグローバルを使用してグローバル変数を定義し、PHP 再帰的並べ替えを実装します。上記と同様に、最初に $i 変数を定義し、次に call メソッドを作成します。このメソッドでは、$i がグローバル変数として定義され、ループ内で独自のメソッドを呼び出した最終結果は上記と同じになります。結果:

12345678910
ログイン後にコピー

方法 3: パラメータの参照渡し#

function call(&$i=1){
  echo $i.&#39;<br>&#39;;
  $i++;
  if($i<=10){
       call($i);
   }
}
call();
ログイン後にコピー
このメソッドを使用すると、PHP における参照渡しの概念を簡単に理解できます。変数を参照によって関数に渡すと、関数のパラメータの値を変更できるようになります。参照パラメータを使用して PHP 再帰的並べ替えを実装するのは、最も基本的で単純なアルゴリズムです。

注: 独自のメソッドを呼び出すときは、パラメーターを渡す必要があります。そうしないと、エラーが報告されます。

上記は、PHP の再帰アルゴリズム、つまり再帰ソートの 3 つの実装方法です。困っている人たちの役に立てば幸いです!

PHP についてさらに詳しく知りたい場合は、PHP 中国語 Web サイト

PHP ビデオ チュートリアル を参照してください。誰でも参照して学ぶことができます。


以上がPHPで再帰的ソートを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート