/* File: power.c -- zu Kap. 2.5.4. rekursive Funktionen
   Fkt.: Berechnung der Potenz einer eingegebenen Zahl
	 und ihres Exponenten (rekursiv) */
#include <stdio.h>
main()
{	int i, anz;
	double x, power();
    for(;;) {
	fprintf(stderr,
	   "Eingabe der Mantisse (double) und des Exponenten (int):");
	if((anz = scanf("%lf %d", &x, &i)) == EOF) break;
	if(anz < 2) {
		fprintf(stderr, "Eingabeformat-Fehler\n");
		scanf("%*s");
		continue;
	}	
	if(x == 0.0 && i <= 0)
		printf("%lf ** %d ist nicht definiert!\n", x, i);
	else
		printf("%20.6lf\n", power(x, i));
   }
   putchar('\n');
}
/* Berechnung der Potenz x ** i */
double power(x, i)
	double x;
	int i;
{
#ifdef DEBUG
	fprintf(stderr,"DEBUG: x = %lf ; i = %d\n", x, i);
#endif
	if(i == 0) return(1);
	if(i < 0)  return(1 / power(x, -i));
	else	   return(x * power(x, i - 1));
}

