Cherrycoke
Mitglied
Hallo,
ich möchte eine Funktion schreiben, die für eine Eingabe x und n, die Potenz x^n ausgibt. Dabei möchte ich den Divide&Conquer-Algorithmus einsetzen. Nun habe ich folgende Funktion geschrieben:
Nun soll ich noch die Zeit im Vergleich der "normalen" Methode berechnen und für die Zahlen 2^256, 2^512 und 2^1000 vergleichen.
Hier tun sich mir zwei Fragen auf:
1. Ist es richtig, dass der Divide&Conquer-A. nur bei kleinen Zahlen schneller ist?
2. Für die Zahl 2^1000 liefert der Algorithmus kein korrektes Ergebnis. Zielt die Fragestellung darauf ab, oder ist mein Algorithmus falsch?
Danke für eure Hilfe!
ich möchte eine Funktion schreiben, die für eine Eingabe x und n, die Potenz x^n ausgibt. Dabei möchte ich den Divide&Conquer-Algorithmus einsetzen. Nun habe ich folgende Funktion geschrieben:
C:
double potenz_dc( double x , int n )
{
double potenz = x;
if( n%2 == 0 ){
if( (n/2) != 1 ){
potenz = potenz_dc(x, n/2) * potenz_dc(x, n/2);
}
else{
return x*x;
}
}
else{
n = n-1;
if( (n/2) != 1 ){
potenz = potenz_dc(x, n/2) * potenz_dc(x, n/2)*x;
}
else{
return x*x;
}
}
return potenz;
}
Nun soll ich noch die Zeit im Vergleich der "normalen" Methode berechnen und für die Zahlen 2^256, 2^512 und 2^1000 vergleichen.
Hier tun sich mir zwei Fragen auf:
1. Ist es richtig, dass der Divide&Conquer-A. nur bei kleinen Zahlen schneller ist?
2. Für die Zahl 2^1000 liefert der Algorithmus kein korrektes Ergebnis. Zielt die Fragestellung darauf ab, oder ist mein Algorithmus falsch?
Danke für eure Hilfe!