Python 获取powersum问题的所有可能组合

Python 获取powersum问题的所有可能组合,python,recursion,dynamic-programming,Python,Recursion,Dynamic Programming,我试图找到所有的数字组合,它们构成了幂和。下面是我的代码,它在找到第一个组合后返回 `代码: def powerSum(targetSum, N): def helper(x,n,c): if pow(c,n)==x: return [c] if pow(c,n)>x: return None l = helper(x,n,c+1) r = helper(x-pow(c,

我试图找到所有的数字组合,它们构成了幂和。下面是我的代码,它在找到第一个组合后返回

`代码:

def powerSum(targetSum, N):
    def helper(x,n,c):
        if pow(c,n)==x:
            return [c]
        if pow(c,n)>x:
            return None
        l = helper(x,n,c+1)
        r = helper(x-pow(c,n),n,c+1)
        if l!=None or r!=None:
            if l==None:
                return r+[c]
            else:
                return l
    return helper(targetSum,N,1)
print(powerSum(100,2))
有人能帮我把所有可能的组合都还给我吗 例子: 如果输入为targetSum=100且N=2,则输出应为三个可能组合列表的列表=[[10],[6,8][1,3,4,5,7]]
而我的输出仅为[10]

请重新考虑返回类型:

def powerSum(targetSum,N):
def辅助设备(x、n、c):
如果功率(c,n)=x:
返回[[c]]
如果功率(c,n)>x:
返回[]
l=辅助对象(x,n,c+1)
r=辅助(x-pow(c,n),n,c+1)
对于r中的_r:
l、 追加([c]+\r)
返回l
返回帮助器(targetSum,N,1)
打印(powerSum(100,2))

很好的解决方案。是否希望添加注释以详细说明原始代码问题?@DanielHao谢谢。我想我做到了——它基本上与OP相同,只是返回类型不同(因此对这些类型的处理也不同)。非常感谢您的解决方案,我对递归以及如何处理返回类型等都有点陌生。我很乐意接受一个建议来提高自己