8

再帰ラムダの実装に興味があり、フィボナッチ計算用の次のコードを見つけました。

 std::function<int(int)> lfib = [&lfib](int n) {return n < 2 ? 1 : lfib(n-1) + lfib(n-2);};

質問があります:std::functionは多相関数であるためlfib、ラムダをスタックではなくヒープ メモリに作成/保存します。したがって、プログラムの最適化の可能性が失われる可能性があります。正しいかどうか?

4

1 に答える 1