Ergebnis 1 bis 20 von 39

Thema: C++ Fragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Habs mir kurz angesehen... also, du willst eine Funktion, die bei zwei Eingabe-Parametern x und y das Ergebnis "x hoch y" bzw. "x zur Potenz y" zurückgibt, so hast du zwei Möglichkeiten, diese Funktion zu bewerkstelligen:

    Wie du weisst, bedeutet "zur Potenz y", dass du den Wert y mal mit sich selbst multiplizierst, x zur Potenz 2 ist soviel wie x * x. Der erste logische Ansatz wäre dabei der iterative

    Code:
    double powerIter(double x, int y) {
      double res = 1; 
      int i;
      for(i = 0; i < y; i++) {
        res *= x;
      }
      return res;
    }
    Logisch, ich lasse die Funktion den Wert solange mit sich selbst mal nehmen, solange es die Funktion verlangt.

    Beim rekursiven Ansatz hingegen brauche ich zwei Dinge: Den rekursiven Aufruf, und eine Abbruchbedingung.

    Die Abbruchbedingung ist auch klar: Ich möchte y mal x mit sich selbst produzieren, also zähle ich von y einfach runter bis 0. Ist y also 0, gebe ich einfach x zurück, ansonsten rufe ich die Funktion nochmal auf, kennzeichne allerdings, dass ich bereits einmal in der Funktion war (zähle also von y eins herunter...). Das ganze sieht dann so aus:

    Code:
    double powerRek(double x, int y) {
      /* Abbruchbedingung */
      if(y == 0) {
        return x;
      /* Rekursiver Aufruf */
      } else {
        return x * powerRek(x, --y);
      }
    }
    Eleganter, aber weit langsamer, und für derartige Mickymausaufgaben auch nicht wirklich nötig (Fehler vorbehalten, kann natürlich sein, dass y == 1 sein muss, bzw. die Bedingung im iterativen Teil i <= y sein muss, aber das sollst du einfach selbst ausprobieren).

  2. #2
    Danke, kann ich's endlich ^^
    Ach ja, da wäre noch was:
    Kann mir mal jemand erklären wozu man Zeiger und das ganze drum rum im praktischen gebrauchen kann, z.B. in Spielen(Jaja, ich will Spieleprogger werden ^^)

  3. #3
    Zitat Zitat von Smith64FX
    Danke, kann ich's endlich ^^
    Ach ja, da wäre noch was:
    Kann mir mal jemand erklären wozu man Zeiger und das ganze drum rum im praktischen gebrauchen kann, z.B. in Spielen(Jaja, ich will Spieleprogger werden ^^)
    In C brauch ichs eigentlich immer. Da es mit dem dynamischen Speicheranlegen ja nicht soweit her ist als etwa bei Java (oder jeder anderen Programmiersprache, iirc) brauchst du einfach Zeiger, um ein Array (oder was auch immer) dynamisch anzulegen. Ich hab ehrlich gesagt noch keine einzige (sinnvolle) C-Applikation geschrieben, in der ich komplett ohne Zeiger ausgekommen bin, und seis einfach nur **argv an glut weiterzuleiten...

  4. #4
    Haste auch 'n direktes Beispiel in nem Spiel, wozu man das brauchen könne?

  5. #5
    Zitat Zitat von Smith64FX
    Haste auch 'n direktes Beispiel in nem Spiel, wozu man das brauchen könne?
    Das wirst du dann schon sehen, wofür man es brauchen kann.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •