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

Содержимое удалено Содержимое добавлено
исправление
м Исправлена ошибка в функции "power"
Строка 25:
while (scanf ("%lf %ld", &x, &n) == 2) {
printf("%lf\n", power (x, n));
}
}
</source>
Приведёный выше пример не будет работать для отрицательных показателей степени (см. третью строку функции "power").
Правильнее было бы так:
<source lang="c">
/*
Степень числа: простая рекурсия
*/
#include<stdio.h>
 
double power(double x, long n) {
if(n == 0) return 1.0;
if(n < 0) return 1.0 / (x * power (1.0 / x, n + 1));
return x * power(x, n - 1);
}
 
void main() {
double x;
long n;
while (scanf ("%lf %ld", &x, &n) == 2) {
printf("%16.16lf\n", power (x, n));
}
}