Maison > Article > développement back-end > Les expressions lambda C++ prennent-elles en charge la récursivité ?
Oui, les expressions C++ Lambda peuvent prendre en charge la récursivité en utilisant std::function : utilisez std::function pour capturer une référence à une expression Lambda. Avec une référence capturée, une expression lambda peut s'appeler de manière récursive.
Récursion des expressions lambda en C++
Les expressions lambda sont une fonctionnalité puissante en C++ qui vous permet de définir des objets de fonction anonymes au moment de l'exécution. Généralement, les expressions lambda ne peuvent pas être récursives car elles ne peuvent pas capturer leurs propres références. Cependant, il existe une technique pour prendre en charge la récursivité des expressions lambda à l'aide de std :: function.
Utilisation de std::function
std::function est un objet fonction qui peut contenir une référence à n'importe quel objet appelable, y compris les expressions lambda. En utilisant std::function pour capturer une référence à une expression lambda, vous pouvez créer une expression lambda qui peut être appelée de manière récursive.
Exemple de code
L'exemple de code suivant montre comment utiliser std::function pour activer la récursion d'une expression lambda :
#include <functional> int fibonacci(int n) { std::function<int(int)> 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; }
Dans cet exemple, une référence à l'expression lambda fib
捕获了对自身 fib
. De cette façon, il peut s'appeler de manière récursive pour calculer les nombres de Fibonacci.
Remarque
Bien que vous puissiez utiliser la fonction std::pour prendre en charge la récursivité des expressions lambda, vous devez toujours faire attention aux éléments suivants lorsque vous utilisez la récursivité :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!