24 / 90

C++ Recursion

C++ rekursiya

O'zini chaqiradigan function rekursiv funksiya sifatida tanilgan. Va bu texnika rekursiya deb nomlanadi.

Rekursiyaning C++ da ishlashi

example.cpp
void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}

int main()
{
    ... .. ...
    recurse();
    ... .. ...
}

Quyidagi rasmda o'zini qayta-qayta chaqirish orqali rekursiya qanday ishlashi ko'rsatilgan.

How recursion works in C++ programming

Working of C++ recursion

Rekursiya ba'zi shartlar bajarilmaguncha davom etadi.

Cheksiz rekursiyani oldini olish uchun if...else operatori (yoki shunga o'xshash yondashuv) dan bitta filial rekursiv qo'ng'iroqni amalga oshirsa, ikkinchisi yo'q bo'lsa ishlatilishi mumkin.

1-misol: Rekursiya yordamida sonning faktorial

example.cpp
// n = 1*2*3*...*n faktorial

#include <iostream>
using namespace std;

int factorial(int);

int main() {
    int n, result;

    cout << "Enter a non-negative number: ";
    cin >> n;

    result = factorial(n);
    cout << "Factorial of " << n << " = " << result;
    return 0;
}

int factorial(int n) {
    if (n > 1) {
        return n * factorial(n - 1);
    } else {
        return 1;
    }
}

Chiqish

kod
Enter a non-negative number: 4
Factorial of 4 = 24

Faktorial dasturning ishlashi

Bu C++ rekursiya dasturi qanday ishlaydi

Working of C++ Recursion Program

Ko'rib turganimizdek, factorial() funksiyasi o'zini chaqirmoqda. Biroq, har bir qo'ng'iroq paytida biz n qiymatini 1 ga kamaytirdik. Agar n 1 dan kichik bo'lsa, factorial() funksiyasi yakuniy natijani qaytaradi.

Rekursiyaning afzalliklari va kamchiliklari

Quyida C++ da rekursiyadan foydalanishning ijobiy va salbiy tomonlari keltirilgan.

C++ Rekursiyasining afzalliklari

  • Bu bizning kodimizni qisqartiradi va tozalaydi.
  • Rekursiya ma'lumotlar tuzilmalari va ilg'or algoritmlar bilan bog'liq muammolarda talab qilinadi, masalan, Grafik va Daraxtlarni kesish.

C++ rekursiyasining kamchiliklari

  • Iterativ dastur bilan solishtirganda bu juda ko'p joy oladi.
  • Bu ko'proq protsessor vaqtini sarflaydi.
  • Ekvivalent iterativ dasturga nisbatan disk raskadrovka qilish qiyinroq bo'lishi mumkin.

Shuningdek o'qing:

-C++ Program to Calculate Power Using Recursion -C++ program to Calculate Factorial of a Number Using Recursion