Toon posts:

[c] Recursief machtsverheffen

Pagina: 1
Acties:
  • 490 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Kan iemand mij helpen een recursieve functie te schrijven voor x tot de macht n???
Mij lukt t niet echt, vanwege het "scheve" denken bij recursie.

Alvast Thanx

Acties:
  • 0 Henk 'm!

  • Luqq
  • Registratie: Juni 2005
  • Laatst online: 19:38
Begin eens met het opzoeken wat een macht eigenlijk is, en wat je zou kunnen doen in elke recursie-iteratie om de exponent te verlagen :)

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Misschien even helpen met een eenvoudige:
C:
1
2
3
4
5
6
7
unsigned int fibonacci(unsigned int index)
{
  if (index <= 1)
    return index;

  return fibonacci(index-1) + fibonacci(index-2);
}


Stappen om ertoe te komen:
- Druk elke oplossing uit als een combinatie van vorige oplossingen en parameters.
In dit geval is een fibonacci getal de som van de vorige 2 fibonacci getallen.
- Voeg dan de speciale gevallen toe.
In dit geval zijn de eerste 2 fibonacci getallen altijd 0 en 1.

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

Verwijderd

Bij verheffen van 2 tot de macht 3, moet je dus zorgen dat je 2 x 2 x 2 krijgt. Het lijkt me duidelijk dat je een functie krijgt met twee argumenten, in dit geval dus 2 en 3.

De aanroep wordt dus: jouwfunctie ( 2, 3 );
In die functie wil je 2 keer iets doen. Alleen aangezien je het recursief wilt doen, moet je dus jouwfunctie aanroepen, maar dan wel zo dat de recursie ergens eindigt. Ik stel voor om te bedenken dat je elke iteratie dichter bij je doel moet komen, en elke iteratie ga je dus een niveau minder diep. Er moet een conditie zijn opgenomen, anders krijg je een oneindige lus.

code:
1
2
3
4
5
6
7
jouwfunctie ( grondtal, macht ) {
   als ( macht > 1 ) {
      return grondtal * jouwfunctie ( grondtal, macht - 1 );
   } anders {
      return grondtal;
   }
}

Zo gaat dat dus. Elke ireratie wordt er één keer de macht verminderd, en wordt met het grondtal vermenigvuldigd.

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Verwijderd schreef op zondag 07 februari 2010 @ 15:25:
Bij verheffen van 2 tot de macht 3, moet je dus zorgen dat je 2 x 2 x 2 krijgt. Het lijkt me duidelijk dat je een functie krijgt met twee argumenten, in dit geval dus 2 en 3.

De aanroep wordt dus: jouwfunctie ( 2, 3 );
In die functie wil je 2 keer iets doen. Alleen aangezien je het recursief wilt doen, moet je dus jouwfunctie aanroepen, maar dan wel zo dat de recursie ergens eindigt. Ik stel voor om te bedenken dat je elke iteratie dichter bij je doel moet komen, en elke iteratie ga je dus een niveau minder diep. Er moet een conditie zijn opgenomen, anders krijg je een oneindige lus.

code:
1
2
3
4
5
6
7
jouwfunctie ( grondtal, macht ) {
   als ( macht > 1 ) {
      return grondtal * jouwfunctie ( grondtal, macht - 1 );
   } anders {
      return grondtal;
   }
}

Zo gaat dat dus. Elke ireratie wordt er één keer de macht verminderd, en wordt met het grondtal vermenigvuldigd.
Behalve dat GoT geen afhaalbalie is wil ik je wel even op een cruciale fout wijzen: X^0=1

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Het is heel lief dat mensen je hier toch proberen te helpen, maar GoT is geen afhaalbalie voor kant en klare code, zie ook Programming FAQ - Scriptrequests. Het is niet de bedoeling dat je alleen even komt melden wat je hebben wil en een paar uurtjes later even je code komt ophalen zodat die gecopy/pasted kan worden in je code. We willen hier eigen inzet zien, zie ook De Quickstart. Omdat ik dat hier in je topic gewoon totaal mis doe ik dit topic op slot. Als je nog steeds problemen hebt kun je een nieuw topic openen maar dan graag wél aan de hand van de quickstart. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.