У меня есть рекурсивная проблема Backtracking для школы, и я не понимаю, как бы я go решил ее.
Учитывая массив целых чисел, определите, можно ли выбрать группу из них. целые числа, которые добавляют к определенной сумме. Используйте рекурсивный метод с именем sum_to_total
для решения проблемы (без циклов!).
Примеры:
- "Array
[3, 6, 7]
" и "Sum 10" возвращает true, поскольку 3 + 7 = 10
- «Массив
[1, 2, 3]
» и «Сумма 6» возвращает значение true, поскольку 1 + 2 + 3 = 6
- «Массив
[2, 4, 6]
» и «сумма 5» возвращает значение false, поскольку комбинация отсутствует из этих чисел сумма 5
Вот что я получил до сих пор:
def self.sum_to_total(sum, array, index)
@@sum_num += array[index]
return false if @@sum_num > sum || @@sum_num < sum
return false if index<board.length || index<0
return true if @@sum_num == sum
return solvable(sum, array, index+1)
end
@@sum_num = 0
puts sum_to_total(10, [3, 5, 7], 0)
Несколько указателей помогут.