Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah syarat keluar untuk fungsi rekursif dalam C++?

Apakah syarat keluar untuk fungsi rekursif dalam C++?

PHPz
PHPzasal
2024-04-17 11:33:01358semak imbas

Syarat keluar dari fungsi rekursif C++ termasuk: Syarat garis dasar: Semak sama ada fungsi mencapai keadaan yang boleh mengembalikan hasil secara langsung, biasanya menilai sama ada keadaan atau nilai parameter tertentu memenuhi ambang. Syarat penamatan rekursif: Alternatif kepada atau sebagai tambahan kepada syarat garis dasar, memastikan fungsi berhenti selepas beberapa panggilan rekursif tertentu, dengan menjejak kedalaman rekursif atau menetapkan had kedalaman rekursif maksimum.

C++ 递归函数的退出条件是什么?

Syarat keluar untuk fungsi rekursif dalam C++

Fungsi rekursif menyelesaikan masalah dengan memanggil diri mereka berulang kali. Untuk mengelakkan terperangkap dalam gelung rekursif tak terhingga, syarat keluar yang jelas mesti ditentukan. Dalam C++, syarat keluar biasanya dilaksanakan dengan cara berikut:

1 Syarat garis dasar:

  • digunakan untuk menentukan apabila fungsi mencapai keadaan di mana ia boleh mengembalikan hasil secara langsung.
  • Biasanya menyemak sama ada syarat tertentu dipenuhi atau nilai parameter mencapai ambang tertentu.
  • Apabila keadaan garis dasar adalah benar, fungsi akan kembali secara langsung.
bool isEven(int n) {
  if (n == 0) {  // 基线条件:当 n 为 0 时,返回 true
    return true;
  } 
  else {
    return isEven(n - 1);  // 递归调用
  }
}

2. Syarat penamatan rekursif:

  • sebagai alternatif atau tambahan kepada syarat asas.
  • Digunakan untuk memastikan fungsi berhenti selepas beberapa panggilan rekursif tertentu.
  • Dicapai dengan menjejaki kedalaman rekursi atau menetapkan had kedalaman rekursi maksimum.
int fibonacci(int n) {
  if (n <= 1) {  // 基线条件:当 n <= 1 时,返回 n
    return n;
  } 
  else if (n > MAX_RECURSION_DEPTH) {  // 递归终止条件:当递归深度超过限制时,返回错误值
    return -1;
  } 
  else {
    return fibonacci(n - 1) + fibonacci(n - 2);  // 递归调用
  }
}

Kes praktikal

Fungsi contoh berikut mengira pemfaktoran nombor tertentu:

int factorial(int n) {
  if (n == 0) {  // 基线条件:当 n 为 0 时,返回 1
    return 1;
  } 
  else {
    return n * factorial(n - 1);  // 递归调用
  }
}

Atas ialah kandungan terperinci Apakah syarat keluar untuk fungsi rekursif dalam C++?. 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