1

Onderwerp: C vraagje. Waarom draait functie om.

Beste mensen,
onderstaande code geeft 01234567899876543210 als uitkomst.
Dat is mooi maar waarom, van 0 tot en met 9 is te begrijpen maar dan van 9 tot en met 0 voor mij niet.
Kan iemand dat uitleggen?
Bedankt alvast, Pit


void printnum ( int begin )
{
    printf( "%d", begin );
    if ( begin < 9 )                            /* The base case is when begin is no longer */
    {                                                   /* less than 9 */
        printnum ( begin + 1 );
    }
                                                          /* display begin again after we've already printed everything from 1 to 9
                                                           * and from 9 to begin + 1        */
    printf( "%d", begin );
}

int main()
{
  printnum ( 0 );
  etc....
}

Ubuntu server op de server.
1 Ubuntu op desktop 1 Mint op desktop
1 AntiX desktop
1 MAC op pc

2

Re: C vraagje. Waarom draait functie om.

Het waarom is niet zo moeilijk te beantwoorden. De computer doet wat je zegt en niet wat je bedoelt.

Dus wat wil je eigenlijk?

Old programmers never die: they just jump to a new address
Kubuntu 16.02 LTS, Compaq CQ61 met Linux Mint 18, een Galaxy Tab 10.1 met Android Ice Cream en een Raspberry PI met raspian
http://www.volkerskrant.nl

3

Re: C vraagje. Waarom draait functie om.

Ja die is leuk he, een typisch recursie probleem
wellicht zal het je duidelijk worden als je beide print opdrachten zo aanpast dat je ze in de output kan onderscheiden    bv   als volgt   "A%d"      en "B%d"

wat er gebeurd:
De eerste printopdracht toont bij het aanroepen van de funvtie de waarde in begin

De tweede printopdracht wordt pas uitgevoerd als het recursief aanroepen van de functie printnum uitgevoerd is.
Aan de waarde begin is niets veranderd dus die drukt hij gewoon nog een keer af.
Maar zoals gezegd pas na dat de hele recursie afgelopen is
Het is een beetje vergelijkbaar met een stack die je vult en daarna weer leeghaalt
Dat gebeurd dan in omgekeerde volgorde

Welicht dat het duidelijker wordt als je ehm maar tot 3 laat tellen voorzien van de voorgestelde aanpassingen.

Pascal's Blobfree Homepage
Een dag geen NedLinux is een dag niet geleefd