递归函数三部曲:
递归函数参数返回值
确定终止条件
单层递归逻辑
**思路:**result存组合结果,path存一个结果生成的路径,回溯函数的参数除了所传进去的n和k,还要传进一个起始点startIndex,这就是确定了参数返回值;if()确定终止条件;for循环里先把当前节点push进path,再进行递归,最后pop出来,给后面的节点pop进留位子。最后返回result。
c++题解:
cpp
class Solution {
public:
vector<vector<int>> result;
vector<int> path;
void backtrace(int n,int k,int startIndex)
{
if(path.size()==k)
result.push_back(path);
for(int i=startIndex;i<=n;i++)
{
path.push_back(i);
backtrace(n,k,i+1);//递归
path.pop_back();
}
return;
}
vector<vector<int>> combine(int n, int k) {
backtrace(n,k,1);
return result;
}
};