Ya, ungkapan Lambda C++ boleh menyokong rekursi dengan menggunakan std::function: Gunakan std::function untuk menangkap rujukan kepada ungkapan Lambda. Dengan rujukan yang ditangkap, ungkapan lambda boleh memanggil dirinya secara rekursif.
Rekursi ungkapan lambda dalam C++
Ekspresi Lambda ialah ciri berkuasa dalam C++ yang membolehkan anda mentakrifkan objek fungsi tanpa nama pada masa jalan. Umumnya, ungkapan lambda tidak boleh rekursif kerana ia tidak dapat menangkap rujukannya sendiri. Walau bagaimanapun, terdapat teknik untuk menyokong pengulangan ungkapan lambda menggunakan std::function.
Menggunakan std::function
std::function ialah objek fungsi yang boleh memegang rujukan kepada mana-mana objek boleh panggil, termasuk ungkapan lambda. Dengan menggunakan std::function untuk menangkap rujukan kepada ungkapan lambda, anda boleh mencipta ungkapan lambda yang boleh dipanggil secara rekursif.
Contoh Kod
Contoh kod berikut menunjukkan cara menggunakan std::fungsi untuk mendayakan pengulangan ungkapan lambda:
#includeint fibonacci(int n) { std::function fib = [&fib](int n) { if (n <= 1) { return n; } return fib(n - 1) + fib(n - 2); }; return fib(n); } int main() { int result = fibonacci(5); std::cout << "Fibonacci of 5 is: " << result << "\n"; return 0; }
Dalam contoh ini, rujukan kepada ungkapan lambdafib
捕获了对自身fib
. Dengan cara ini ia boleh memanggil dirinya secara rekursif untuk mengira nombor Fibonacci. . rekursi.
Rekursi dalam harus digunakan dengan berhati-hati kerana kemungkinan limpahan tindanan.
Atas ialah kandungan terperinci Adakah ungkapan lambda C++ menyokong rekursi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!