Рассмотрим проблему суммы подмножеств, где вам дан набор всех положительных целых чисел, и вы хотите определить количество способов, которыми вы могли бы использовать их подмножество для получения желаемого значения.По сути, подсчет количества решений для изменения монеты при наличии только одной монеты каждого номинала.Этот алгоритм (взятый отсюда: https://www.youtube.com/watch?v=nqlNzOcnCfs) вычисляет это:
Автор представил время выполнения как O(n * total)
, где n
- это число целых чисел, которое вы можете использовать, чтобы составить сумму (здесь n = 4), а total - это значение, к которому вы хотите суммировать.
Но в худшем случае рекурсия может делиться максимум дваждыв последнем операторе else глубина рекурсии не превышает n
, поэтому нельзя ли также сказать, что в дереве рекурсии максимальное количество вызовов O(2^n)
, и это должно быть еще одной допустимой сложностью во время выполнения?противоречие здесь, так как этот большой O вообще не зависит от total
?