C++と色々

主にC++やプログラムに関する記事を投稿します。

ラムダ式で再帰関数

先日の記事にて、C++ラムダ式の再帰関数が欲しいと書いたのですが、調べたらstackoverflowラムダ式での再帰関数を実現しようとしているコードがありました。

#include <functional>
#include <iostream>

int main()
{
    std::function<int (int)> fact;
    fact = [&fact](int n){ return n == 0 ? 1 : n * fact(n - 1); };
    std::cout << fact(5) << std::endl;
}

面白いですね。