c++ 踩坑录
lambda 表达式在未显示声明类型时无法递归调用,必须指明类型同时捕获本身
//错误(未指明类型)
auto dfs = [&](int i, int j) {
if (!i || !j) return;
dfs(i - 1, j - 1);
};
//错误(未捕获自身)
function<void(int, int)> dfs = [](int i, int j) {
if (!i || !j) return;
dfs(i - 1, j - 1);
};
//正确
function<void(int, int)> dfs = [&dfs](int i, int j) {
if (!i || !j) return;
dfs(i - 1, j - 1);
};
评论区