Rekursi ialah proses fungsi memanggil dirinya sendiri. Kerumitan masa rekursif boleh dianalisis dengan mengira bilangan panggilan rekursif, contohnya, fungsi faktorial ialah O(n^2), dan fungsi rekursif bagi sebutan ke-n bagi jujukan Fibonacci ialah O(φ^n), di mana φ ialah nisbah emas.
Penjelasan terperinci tentang rekursi fungsi C++: analisis kerumitan rekursi
Apakah rekursi?
Rekursi ialah tingkah laku fungsi yang memanggil dirinya sendiri. Rekursi berlaku apabila fungsi memanggil dirinya sendiri.
Contoh rekursi
Berikut ialah fungsi rekursif yang mengira faktorial:
int factorial(int n) { if (n == 0) { return 1; } return n * factorial(n - 1); }
Analisis kerumitan rekursi
Kerumitan fungsi rekursif boleh dianalisis dengan mengira nombornya dengan mengira bilangannya.
Untuk fungsi faktorial:
Secara analogi, apabila n ialah k, bilangan panggilan rekursif ialah k + 1.
Bilangan panggilan rekursif membentuk urutan aritmetik: 1, 2, 3, ..., k + 1, dan formula penjumlahannya ialah:
1 + 2 + 3 + ... + (k + 1) = (k + 1) * (k + 2) / 2
Oleh itu, kerumitan fungsi faktorial ialah O(n^2) .
Kes praktikal
Berikut ialah fungsi rekursif yang mengira sebutan ke-n bagi jujukan Fibonacci:
int fibonacci(int n) { if (n <= 1) { return 1; } return fibonacci(n - 1) + fibonacci(n - 2); }
Bilangan panggilan rekursif berkaitan dengan nisbah emas, dan kerumitannya ialah O(φ^n), dengan φ ≈ 1.618 Nisbah emas.
Atas ialah kandungan terperinci Penjelasan terperinci tentang rekursi fungsi C++: analisis kerumitan rekursi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!