Seek whether there's a combination has the sum equal to half of total sum.

Simply return False if sum of the list is not even.

Target minus each element as Target for next recursion of the rest elements.

Base case:

Target < 0 (ignore)

Target == 0 (return True)

Recursive case:

Otherwise

```
class Solution(object):
def canPartition(self, nums):
nums.sort(reverse=True)
def helper(start, target): # Here path is not needed
if target < 0: return
elif target == 0: return True
for i in xrange(start, len(nums)):
if helper(i+1, target-nums[i]): return True
return False
return False if sum(nums)%2 else helper(0, sum(nums)/2)
```

**EDIT:**

modified based on @WKVictor 's advise.

**EDIT 2:**

Thanks @whglamrock 's advise, added one line for new test case. => nums.sort(reverse = True)