思路:
递归出口:当path长度为k且path中元素的和为n时,将path加入result中,return。
单层递归逻辑:i从startIndex开始到9,将i加入path中;递归调用;回溯。
剪枝:当path中元素的和大于n时,直接return。
class Solution(object):
def back(self,k,n,startIndex):
if sum(self.path)>n:
return
if len(self.path)==k:
if sum(self.path)==n:
self.result.append(self.path[:])
return
for i in range(startIndex,10):
self.path.append(i)
self.back(k,n,i+1)
self.path.pop()
def combinationSum3(self, k, n):
self.result=[]
self.path=[]
self.back(k,n,1)
return self.result