Рекурсивная сложность, ответ неверный? - PullRequest
0 голосов
/ 08 июня 2019

У меня есть следующий код, и я хочу найти сложность:

analizz(int n) 
    c = 1 
    k = n*n 
    while k > 1 do k = k - 2 
    for i = 0 to 1 do
    if n >1 then analizz(n/2)

Проблема в том, что код, написанный таким образом, и я пытаюсь понять, цикл FOR находится внутри цикла while, поэтому стоимость должна быть O (n ^ 2), и один рекурсивный вызов, если n> 1 , так что T (n / 2).

Ответ должен быть T (n) = 2T (n / 2) + cn2, я не могу понять, как именно 2T (n / 2)? если есть только один рекурсивный вызов?

ps.Я не знаю, какой заголовок лучше всего описывает мою проблему

1 Ответ

1 голос
/ 08 июня 2019

Код написан плохо, но если ответ правильный, то for не находится внутри цикла while, а if находится внутри цикла for.while дает cn^2, а два рекурсивных вызова находятся внутри цикла for

...