Используя следующий алгоритм, я пытаюсь определить наилучшее и наихудшее O ().
minCoin(total, C[]) {
if (total == 0) {return 0}
min = MAX_VALUE
for (i in C.length) {
if (C[i] > total) {continue}
value = minCoin(total - C[i], C)
if (value < min) {min = value}
}
min = MAX_VALUE ? min : min++
return min
}
Наилучшее: O (1), потому что если итоговое значение == 0, вернем худшее: O (nT)потому что n = количество монет в массиве, а T = общая сумма, которую мы делаем.
Я также подумал, что наихудший случай может быть O (2 ^ n), где n - количество рекурсивных вызовов.
Это правильно?