какова временная сложность вложенного цикла в рекурсивной функции?

#python #algorithm #time-complexity #big-o

#python #алгоритм #временная сложность #big-o

Вопрос:

У меня есть рекурсивная функция с вложенным циклом.Я ищу, какова временная сложность? Вот функция

 def csFirstUniqueChar(input_str,letter = 0,num = 1):
    if letter == len(input_str):
        return -1
    for x in range(len(input_str)): 
        if x == letter:
            continue
        if input_str[x] == input_str[letter]:
            num  = 1
    if num == 1:
            return letter
    else:
        return csFirstUniqueChar(input_str,letter   1,1)
  

Ответ №1:

Предположим n , это длина input_str . В худшем случае алгоритм может повторять n время рекурсивно, т. Е. При каждом рекурсивном вызове letter будет увеличиваться на 1 , и его можно продолжить до n . На каждой итерации хуже всего O(n) (выполнение цикла полностью). Следовательно, временная сложность O(n^2) .