>  기사  >  백엔드 개발  >  C++ 람다 표현식은 재귀를 지원합니까?

C++ 람다 표현식은 재귀를 지원합니까?

WBOY
WBOY원래의
2024-04-17 21:06:01529검색

예, C++ Lambda 표현식은 std::function을 사용하여 재귀를 지원할 수 있습니다. std::function을 사용하여 Lambda 표현식에 대한 참조를 캡처합니다. 캡처된 참조를 사용하면 람다 식은 자신을 재귀적으로 호출할 수 있습니다.

C++ lambda 表达式是否支持递归?

C++에서 람다 식의 재귀

Lambda 식은 런타임에 익명 함수 개체를 정의할 수 있는 C++의 강력한 기능입니다. 일반적으로 람다 식은 자체 참조를 캡처할 수 없기 때문에 재귀적일 수 없습니다. 그러나 std::function을 사용하여 람다 식의 재귀를 지원하는 기술이 있습니다.

std::function 사용

std::function은 람다 표현식을 포함하여 호출 가능한 모든 개체에 대한 참조를 보유할 수 있는 함수 개체입니다. std::function을 사용하여 람다 식에 대한 참조를 캡처하면 재귀적으로 호출할 수 있는 람다 식을 만들 수 있습니다.

코드 예제

다음 코드 예제에서는 std::function을 사용하여 람다 식의 재귀를 활성화하는 방법을 보여줍니다.

#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;
}

이 예제에서는 람다 식에 대한 참조fib 捕获了对自身 fib입니다. 이렇게 하면 피보나치 수를 계산하기 위해 자신을 재귀적으로 호출할 수 있습니다.

참고

std::function을 사용하여 람다 식의 재귀를 지원할 수 있지만 재귀를 사용할 때는 여전히 다음 사항에 주의해야 합니다.

  • 무한을 방지하려면 재귀 조건을 명확하게 정의해야 합니다. 재귀.
  • 깊은 재귀는 잠재적인 스택 오버플로로 인해 주의해서 사용해야 합니다.

위 내용은 C++ 람다 표현식은 재귀를 지원합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.