Как рассчитать сложность по времени для следующего алгоритма. Я пытался, но меня путают, потому что рекурсивные звонки.Как рассчитать сложность времени для следующего алгоритма
power (real x, positive integer n)
//comment : This algorithm returns xn, taking x and n as input
{
if n=1 then
return x;
y = power(x, |n/2|)
if n id odd then
return y*y*x //comment : returning the product of y2 and x
else
return y * y //comment : returning y2
}
Может кто-нибудь объяснить в простых шагах.
Можно ли предположить, что если рекурсия уменьшена на n/2, тогда сложность будет иметь «log n» –
@ user2684719 Не обязательно: вам нужно увидеть, что делает тело функции. Например, если бы был цикл, который повторял 'K' раз для каждого вызова, где' K' - это верхний уровень 'N', тогда сложность была бы« O (N * Log2 (N)) ». Если бы вместо двух было два вызова, сложность была бы «O (N)» и т. Д. – dasblinkenlight
@ user2684719: Примите ответ, если он решит ваши сомнения. –