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

Материал из Викиучебника — открытых книг для открытого мира
Перейти к навигации Перейти к поиску

#include<stdio.h>

 double power(double x, long n) {
 if(n == 0) return 1;
 if(n < 0) return power ( 1.0 / x, --n); // Зачем здесь эта строчка, если программа "не рассчитана" на 
                                         //случай отрицательных n? - т.е. я хочу сказать, что код 
                                         //не соответствует последующему тексту:
                                         //"Приведёный выше пример не будет работать для отрицательных 
                                         //показателей степени (см. третью строку функции "power")" 
                                         //- третья строчка это return x * power(x, n - 1);, а зачем тогда 
                                         //вторая строчка с проверкой отрицательности n и последующим 
                                         //вызовом функции power с несовсем правильными аргументами: может 
                                         //быть вместо power ( 1.0 / x, --n) 
                                         //нужно power ( 1.0 / x, -n) ???
 return x * power(x, n - 1); }
 void main()   {
    double x;
    long n;
    while (scanf ("%lf %ld", &x, &n) == 2) {
    printf("%lf\n", power (x, n)); }
}

188.18.71.186 16:45, 17 ноября 2009 (UTC) anonymousОтветить[ответить]