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

) Я пытаюсь найти временную сложность этой функции в тета-нотации. Теперь n - положительное целое число, а lst - это список с двумя числами.

(define (func n lst)
  (if (= n 0) lst
      (accumulate append null
                  (map (lambda (x)
                         (func (- n 1) (list x x)))
                       lst))))

Как вы знаете, временная сложность добавления равна (n), где n - общий размер списков. Я попытался увидеть, что произойдет, если я буду рассматривать добавление и накопление как функции Θ (1), тогда я получаю:

T (n) = 2T (n-1) + Θ (1), что равно -> Θ (2 ^ n)

Означает ли это, что фактическая временная сложность этой вещи в тета-нотации намного больше, чем Θ (2 ^ n)?

Я даже не уверен, что прав только с этим предположением, и в любом случае, я не знаю, что делать, если мне нужно принять во внимание и накопление, и добавление ...

Я потратил на это время зря, и я действительно не понимаю, почему я не могу понять это я сам ... Любая помощь будет с удовольствием оценена.

кстати, вот код накопления:

(define (accumulate op init lst)
   (if (null? lst)
       init
          (op (car lst)
             (accumulate op init (cdr lst)))))
9
задан Jon O. 23 December 2011 в 16:07
поделиться