Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Prinsip dan aplikasi panggilan rekursif fungsi PHP

Prinsip dan aplikasi panggilan rekursif fungsi PHP

WBOY
WBOYasal
2024-04-17 10:45:021045semak imbas

Prinsip pengulangan fungsi: fungsi memanggil dirinya sendiri (rujukan kendiri). Parameter berubah setiap kali ia dipanggil. Teruskan rekursi sehingga syarat rekursi (stop condition) dipenuhi. Aplikasi fungsi rekursif: Memudahkan masalah kompleks (menguraikannya kepada sub-masalah). Kod bersih (lebih elegan). Contoh: Kira faktorial (terurai kepada produk). Cari nenek moyang nod dalam pokok (cari secara rekursif).

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

Prinsip dan aplikasi panggilan rekursif fungsi PHP

Apakah itu rekursi fungsi

Rekursi fungsi merujuk kepada ciri rujukan sendiri bagi fungsi yang memanggil itu sendiri. Apabila fungsi dipanggil dalam dirinya sendiri, ia dipanggil panggilan rekursif.

Prinsip rekursi

  1. Fungsi itu memanggil dirinya sendiri.
  2. Dalam panggilan rekursif, parameter fungsi akan berubah.
  3. Proses rekursif akan berterusan sehingga keadaan rekursif tercapai.
  4. Selepas syarat rekursi dipenuhi, fungsi akan menghentikan rekursi dan mengembalikan hasilnya.

Kelebihan rekursi

  • Menyelesaikan masalah kompleks: Rekursi boleh menguraikan masalah kompleks kepada sub-masalah yang lebih kecil, dengan itu memudahkan penyelesaiannya.
  • Kesederhanaan kod: Kod rekursif biasanya lebih ringkas dan elegan daripada kod bukan rekursif.

Kes permohonan

1. Kira faktorial

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

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

2. Cari nenek moyang nod dalam pokok

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']

Atas ialah kandungan terperinci Prinsip dan aplikasi panggilan rekursif fungsi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn