Бит log* N
- это итеративный алгоритм, который растет очень медленно, намного медленнее, чем просто log N
.Вы просто продолжаете итеративно «регистрировать» ответ, пока он не станет ниже единицы (например, log(log(log(...log(N)))
), и количество раз, которое вам нужно было log()
, является ответом.
В любом случае, это пять-летний вопрос по Stackoverflow, но без кода? (!) Давайте исправим это - вот реализации как для рекурсивных, так и для итеративных функций (они оба дают одинаковый результат):
public double iteratedLogRecursive(double n, double b)
{
if (n > 1.0) {
return 1.0 + iteratedLogRecursive( Math.Log(n, b),b );
}
else return 0;
}
public int iteratedLogIterative(double n, double b)
{
int count=0;
while (n >= 1) {
n = Math.Log(n,b);
count++;
}
return count;
}