Dzień dobry,
aktualnie uczę się Pythona i dla treningu postanowiłem napisać program rekurencyjnego szybkiego podnoszenia do potęgi. Podczas gdy algorytm działa bezproblemowo w C++, w Pythonie pojawia się błąd o treści "maximum recursion depth exceeded in comparison" . Bardzo prosiłbym o wytłumaczenie dlaczego tak się dzieje. Poniżej kod w obu językach.
def potega(x, n):
if n == 1:
return x
else:
p = potega(x, n / 2)
if n % 2 == 1:
return x * p * p
else:
return p * p
base = int(input("podaj podstawę: "))
power = int(input("podaj potęgę: "))
print(potega(base, power))
#include <iostream>
using namespace std;
long int potega(int x, int n)
{
if(n==1) return x;
else
{
long int p=potega(x, n/2);
if(n%2==1) return x*p*p;
else return p*p;
}
}
int main()
{
int x,n;
cin>>x; cin>>n;
cout<<potega(x,n);
return 0;
}