C++ Weekly Episode 162 Recursive Lambdas
C++ Weekly Episode 162 Recursive Lambdas
若使用常规的递归方式来实现一个斐波那契数列的 lambda 函数, 如下:
1 | constexpr auto fib = [](int input) { |
此时编译器将报错, 因为 lambda 内在调用 fib
时, 还不知道 fib
完整的定义:
1
2 error: variable 'fib' declared with deduced type 'const auto' cannot appear in its own initializer
return fib(input - 1) + fib(input - 2);
解决方式之一, 将 lambda 自身作为作为一个参数传入:
1 |
|
但是调用时传入自身又显得略微多余, 不够优雅. 还可以包装一下 lambda , 这样我们只需要传入一个参数就可以:
1 | constexpr auto fib_ = [](const auto fib, int input) { |
不过, 还是存在两个 lambda 定义, 我们可以直接一步到位:
1 | constexpr auto fib = [](int input) { |
本文标题:C++ Weekly Episode 162 Recursive Lambdas
文章作者:xwnb
发布时间:2023-04-17
最后更新:2023-04-17
原始链接:https://xwnb.github.io/posts/2750461479/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!并保留本声明。感谢您的阅读和支持!
分享