递归函数三部曲:
递归函数参数返回值
确定终止条件
单层递归逻辑
思路:result存组合结果,path存一个结果生成的路径,回溯函数的参数除了所传进去的n和k,还要传进一个起始点startIndex,这就是确定了参数返回值;if()确定终止条件;for循环里先把当前节点push进path,再进行递归,最后pop出来,给后面的节点pop进留位子。最后返回result。
c++题解:
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;}
};