potenzrechnung
-
hab ein problem mit meinem program und finde den fehler leider nicht.
Es sollen potenzen rauskommen, auf dem papier klapt da program auch, aber bei c++ will es nicht laufen. In c++ kommt für c immer 0 raus obwohl für c der wert von z zugewisen werden soll.# include <iostream.h> int a,b,c; void rechnen(int x,int y,int &z) { if (y<2) z=x ; else y=y-1; z=z*x; } void main() { cout<<"Geben sie die Zahlen nach dem Beispiel ein (Bsp. a^b)"<< endl; cout<<"Wert fuer a:"<<endl; cin >>a; cout<<"Wert fuer b:"<<endl; cin >>b; rechnen(a,b,c); cout<<"Das Egebnis ist:"<<c<<endl; }
-
So:
void rechnen(int x,int y,int &z) { z = x; while ( y-- ) { z *= x; } }grüße
-
hi, ich muss das program leider in meiner form aufschreibn, es soll ein rekursiver algorithmus sein.
Das heißt das z wird solange einfach übernommen bis y<2 ist und danach soll z ein wert zugewiesen werden und rekursiv ausgerechnet werden.Freue mich über Hilfe
-
Abgesehen davon das du garkeine Rekursion machst sind noch andere Denkfehler enthalten. z.B. hat z keinen brauchbaren Initialisierungswert.
Mein Beispiel:
int pot( int x, int y ) { if ( y < 2 ) return x; else return x*pot( x, --y ); }grüße
-
könntest du dann vielleicht ein beispiel für eine rekursion liefern?
-
Mein letztes Beispiel is doch eins!

-
das läuft bei mir so leider nicht :/...was muss ich noch alles schreiben damit c++ es laufen lässt?
danke schon mal für die geduld ^^
-
#include <iostream> int pot( int x, int y ) { if ( y < 2 ) return x; else return x*pot( x, --y ); } int main() { std::cout << pot( 10, 2 ) << std::endl; }grüße
-
hm, bei mir wird das programm sofort abgebrochen ohne das ich was sehe

-
-
Ach du mein Gott... Das is ja wohl wirklich [...]
#include <iostream> int pot( int x, int y ) { if ( y < 2 ) return x; else return x*pot( x, --y ); } int main() { std::cout << pot( 10, 2 ) << std::endl; std::cin.clear(); std::cin.ignore( std::cin.rdbuf()->in_avail() ); std::cin.get(); }
-
Der Vollständigkeit halber noch ne rechtsrekursive Version, obwohl ich nicht glaube, dass das irgendein C++-Compiler inlined:
int pow(int b, int e, int accu = 1) { if (e == 0) return 1; if (e == 1) return b * accu; return pow(b, e - 1, b * accu); }