У меня есть рекурсивная проблема Backtracking для школы, и я не понимаю, как я буду ее решать.
Учитывая массив целых чисел, определите, можно ли выбрать группу тех целых чисел, которые складываются в определенную сумму. Используйте рекурсивный метод под названием sum_to_total
для решения проблемы (без циклов!).
Примеры:
- "Массив
[3, 6, 7]
" и "Сумма 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)
Несколько указателей помогут.
solvable
не определен. - person the Tin Man   schedule 20.03.2020