Rekursi ialah teknik di mana fungsi memanggil dirinya sendiri, tetapi mempunyai kelemahan limpahan tindanan dan ketidakcekapan. Alternatif termasuk: pengoptimuman rekursif ekor, di mana pengkompil mengoptimumkan panggilan rekursif ke dalam gelung, yang menggunakan gelung dan bukannya rekursi, yang membolehkan pelaksanaan dijeda dan disambung semula, mensimulasikan tingkah laku rekursif.
C++ Fungsi Rekursi Penjelasan Terperinci: Alternatif kepada Rekursi
Apakah rekursi?
Rekursi ialah teknik pengaturcaraan yang membolehkan sesuatu fungsi memanggil dirinya sendiri. Ini boleh digunakan untuk menyelesaikan masalah di mana tugas yang sama perlu dilakukan berulang kali. .
Ketidakcekapan: Panggilan rekursif biasanya tidak cekap kerana ia memerlukan penciptaan bingkai tindanan baharu untuk setiap panggilan.
2. Lelaran
Lelaran ialah cara alternatif untuk menyelesaikan masalah rekursif. Ia menggunakan gelung dan bukannya panggilan rekursif.3. Coroutines
Coroutine ialah benang ringan yang membolehkan pelaksanaan dijeda dan disambung semula dalam fungsi. Ia boleh digunakan untuk mensimulasikan tingkah laku rekursif tanpa menyebabkan limpahan tindanan.Kes praktikal
Pertimbangkan masalah rekursi klasik pengiraan nombor Fibonacci. Berikut ialah alternatif yang dilaksanakan menggunakan lelaran, pengoptimuman ekor-rekursif dan coroutine:Lelaran:
int fib_iterative(int n) { int a = 0, b = 1, c; for (int i = 0; i < n; i++) { c = a + b; a = b; b = c; } return b; }
Pengoptimuman ekor-rekursif:
int fib_tail_recursive(int n, int a, int b) { if (n == 0) { return a; } return fib_tail_recursive(n - 1, b, a + b); } int fib_tail_recursive_wrapper(int n) { return fib_tail_recursive(n, 0, 1); }
tawaran lebih ramai jururawat
Pekerja alternatif: penyelesaian yang cekap tanpa timbunan limpahan atau ketidakcekapan.
Atas ialah kandungan terperinci Rekursi fungsi C++ dijelaskan: alternatif kepada rekursi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!