Rekurencyjne obliczanie ujemnej potegi

0

Witam do napisania mam program liczacy n-ta potęge liczby a;
do tej pory udało mi się napisać program,który liczy potęgę dodatnią, w sposób rekurencyjny, nie mam za to pomysłu jak zabrać się za liczenie potegi ujemnej czyli dla warunku n<0, próbowałem korzystać z zasady, że potega ujemna liczy się jako 1/x^n, ale nie zabardzo mi to wychodziło, ma ktoś jakieś propozycje jak to rozwiązać...

to mój dotychczasowy kod...miejsce w którym mam problem zaznaczyłem kropkami "..."

#include <stdio.h> 
#include <string.h> 
#include <math.h>
#include <iostream>


double pot(double a, double n)
{ 
  if (n==0) return 1 ;
  else if (n>0)
  return pot(a,n-1)*a;
  else return ... ;
}
using namespace std;

int main ()
{
    
double a,n,wynik;
  cout<<"Podaj liczbe a:";
  cin>>a;
  cout<<"Podaj potege n:";
  cin>>n;
  wynik=pot(a,n);
  cout<<endl;
  cout<<"Potega wynosi:"<<wynik<<endl; 
  system("PAUSE");
  return 0;
}

 
1

W swojej funkcji pot sprawdź czy n jest mniejsze od zera; jeśli tak to wywołaj funkcję pot dla tego samego x, ale dla -n, wynik zapisz gdzieś do zmiennej tymczasowej tmp i zwróć 1.0/tmp; jeśli n jest większe od zera to wiesz co robić :)

1

Po pierwsze zmień:
double n
na
int n
bo twój algorytm zakłada że odejmując od n po jedynce w końcu zejdziemy do 0.

Zamiast kropek daj:
1/pot(a,-n)

0

ok działa elegancko... dzieki wielkie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1