ホームページ  >  記事  >  バックエンド開発  >  PHP 関数の再帰呼び出しの原理と応用

PHP 関数の再帰呼び出しの原理と応用

WBOY
WBOYオリジナル
2024-04-17 10:45:02998ブラウズ

関数再帰の原則: 関数はそれ自体を呼び出します (自己参照)。呼び出されるたびにパラメータが変化します。再帰条件(停止条件)が満たされるまで再帰を続けます。関数の再帰的適用: 複雑な問題を単純化します (サブ問題に分解します)。クリーンなコード (よりエレガント)。例: 階乗 (積に分解) を計算します。ツリー内のノードの祖先を検索します (再帰的検索)。

PHP 函数递归调用的原理和应用

#PHP 関数再帰呼び出しの原理と応用

#関数再帰とは

関数の再帰とは、それ自体を呼び出す関数の自己参照機能を指します。関数がそれ自体内で呼び出される場合、それは再帰呼び出しと呼ばれます。

再帰の原理

    関数はそれ自体を呼び出します。
  1. 再帰呼び出しでは、関数のパラメーターが変更されます。
  2. 再帰プロセスは、再帰条件に達するまで続行されます。
  3. 再帰条件が満たされると、関数は再帰を停止し、結果を返します。

再帰の利点

    複雑な問題を解決する: 再帰により、複雑な問題をより小さなサブ問題に分解できるため、解決策が簡素化されます。
  • コードの単純さ: 再帰的コードは通常、非再帰的コードよりも簡潔で洗練されています。

アプリケーション ケース

1. 階乗を計算します。

function factorial($number) {
  if ($number == 1) {
    return 1;
  } else {
    return $number * factorial($number - 1);
  }
}

echo factorial(5); // 输出: 120

2.木の祖先

class Node {
  public $data;
  public $children;
}

function findAncestors($node, $target) {
  if ($node->data == $target) {
    return [$node->data];
  } else {
    $ancestors = [];
    foreach ($node->children as $child) {
      $ancestors = array_merge($ancestors, findAncestors($child, $target));
    }
    if (!empty($ancestors)) {
      $ancestors[] = $node->data;
    }
    return $ancestors;
  }
}

$root = new Node(['data' => 'root']);
$node1 = new Node(['data' => 'node1']);
$node2 = new Node(['data' => 'node2']);
$node3 = new Node(['data' => 'node3']);
$root->children = [$node1, $node2];
$node2->children = [$node3];

$ancestors = findAncestors($root, 'node3');
var_dump($ancestors); // 输出: ['root', 'node2', 'node3']

以上がPHP 関数の再帰呼び出しの原理と応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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