Цикл for выполняется digit+1
раз. Цикл while выполняется nd
раз, где nd
обозначает значение назначенной цифры. Таким образом, в общей общности асимптотическая сложность равна
O(digit + nd).
Эта формула действительна для любой длины числа и любой базы нумерации, но предполагает, что арифметические операции выполняются за постоянное время, что несколько нереально.
В любой базе ясно, что nd = O(1)
, так как это число ограничено базой. Так что в худшем случае ,
O(digit).
Теперь для арифметики фиксированной длины digits
ограничен так, что digits = O(1)
. И, как следствие, сложность наихудшего случая также составляет
O(1).
Обратите внимание, что между сложностью, составляющей O(digits + nd)
, и наихудшей сложностью, равной O(1)
, нет несовместимости. Это оправдано тем, что digits
и nb
равны O(1)
.