Мне было интересно, сможет ли кто-нибудь сказать мне, как эта программа достигает правильного ответа. Я попытался проследить его и не знаю, куда идти, потому что у него есть or
, поэтому я смущен, как он должен быть прослежен. Спасибо за любые разъяснения.Как проследить эту рекурсивную программу
Написать функцию раздела, который принимает список номеров xs
, исходное положение i
и желаемую сумму s
и возвращает True
или False
в зависимости от того, возможно ли найти подпоследовательность элементов списка, начиная с позиции i
которого сумма равна точно s
. Заметим, что всегда можно создать подпоследовательность элементов, сумма которых равна точно 0, а именно пустая последовательность элементов.
def partition(xs,i,s):
print i,s
if i == len(xs):
return s == 0
else:
return partition(xs,i+1,s-xs[i]) or partition(xs,i+1,s)
Эй, это сама Падре? Форматирование очень приятное! –
@BhargavRao, да, я знаю, что вы будете рядом;) –
Вы сократили мою работу, я буду смотреть вверх по объявлениям :(... Но там! Вы пропустили запятую между 2 и 3 ...: P –