Форум сайта python.su
Добрый день. Имеется такая задача - В Англии валютой являются фунты стерлингов £ и пенсы p, и в обращении есть восемь монет: 1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) и £2 (200p). £2 возможно составить следующим образом: 1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
Сколькими разными способами можно составить £2, используя любое количество монет?
Задачу я решил и условие привел только чтобы было понятно, что делает программа. pences - кортеж возможных монет, total (глобальная переменная) - число разных способов составления £2. Функция count (рекурсивная) - подсчитывает значение total, в неё передаётся value - значение из pences, т.е. та монета из которой составляем £2, и part - число пенсов (т.е., к примеру, 100 + 50 + 20) Вопрос в следующем, почему если сразу написать total += count(value, part) (в программе закомментировано), то программа выдает неправильный ответ, а если ввести дополнительную переменную:
temp = count(value, part)
total += temp
то ответ верный?
pences = (200, 100, 50, 20, 10, 5, 2, 1) total = 0 def count(value, part): global total for i in range(0, 201, pences[value]): if part + i < 200 and value < 7: temp = count(value + 1, part + i) total += temp #total += count(value + 1, part + i) elif part + i == 200 or value == 7: return 1 else: return 0 temp = count(0, 0) total += temp #total += count(0, 0) print('Ответ:', total)
Офлайн