Язык Си в примерах/Степень числа: различия между версиями

исправление
(Поставил теги <source>)
(исправление)
double power(double x, long n) {
if(n == 0) return 1;
if(n < 0) return power ( 1.0 / x, --n);
return x * power(x, n - 1);
}
double tmp;
if(n == 0) return 1;
if(n < 0) return power ( 1 / x, --n);
if(n % 2) return x * power (x, n - 1);
return power(x * x, n / 2);
</source>
 
* Сколько шагов требуется для вычисления <math>a^{30}\,\!</math> вторым методом.
* Покажите, что второй алгоритм выполняется за логарифмическое по n число шагов, а точнее ограничено сверху <math>2\cdot \log_2 n\,\!</math> (еще точнее: в точности равно числу знаков в двоичной записи числа n плюс число единичек в этой записи).
* Объясните, как работает программа 3.
Анонимный участник