2015-02-13 3 views
2

мне нужно было всего определится Большой O этого короткого кода:Big O этого короткого кода

var iterations = 0; 

function operation(num){ 
    iterations++; 
    if (num == 0) return 1; 
    return operation(Math.floor((num/10) * 2)); 
} 

var result = operation(1000); 

alert('Result = ' + result + ', number of iterations = ' + iterations); 

я придумал что-то около O(log(logN)), но я не уверен. Не могли бы вы мне немного помочь?

http://jsfiddle.net/qotbu5pq/2/

+1

Пожалуйста, расскажите нам, как вы добрались до 'O (log (log (N))), и мы сможем сообщить вам, где вы поступили неправильно. – Bergi

+3

Существует отличный способ приблизиться к этому: http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it –

+3

Вы почти делите операции на 5, пока не достигнете нуля результат не должен быть '~ log5 (N)' итераций вместо этого, что означает 'O (log (N))' ... – Spektre

ответ

3

[Ответ от комментариев]

  • вы почти разделив операции на 5, пока не достиг нулевого результата
  • так не должна быть ~log5(N) итераций вместо что означает O(log(N))
  • жалкую не хотел добавлять такой тривиальный ответ ...
Смежные вопросы