grouperArray.sort(function (a, b) {
var aSize = a.gsize;
var bSize = b.gsize;
var aLow = a.glow;
var bLow = b.glow;
console.log(aLow + " | " + bLow);
if(aSize == bSize)
{
return (aLow < bLow) ? -1 : (aLow > bLow) ? 1 : 0;
}
else
{
return (aSize < bSize) ? -1 : 1;
}
});
Эта строка является источником проблем:
solnSet.append(nums[0])
При добавлении к list
ничего не возвращается (поэтому по умолчанию возвращается None
). Когда ваша функция выполняет рекурсию для allSum(solnSet.append(nums[0]), nums[1:], target)
, , вы фактически передаете None
в первый аргумент .
Это вызовет исключение 'NoneType' object is not iterable
, когда ваш код запускает map(lambda x: tuple(x), solnSet)
или sum(solnSet)
.
Чтобы решить эту проблему, вы можете сделать
allSum(solnSet + [nums[0]], nums[1:], target)
(это создает новый список и не изменяет оригинал)
[1118 ] или
solnSet.append(nums[0])
allSum(solnSet, nums[1:], target)
(но этот действительно изменяет оригинал).