Rekursive Funktion...wie funktionierts genau?
-
Hey Leute,habe folgenden Quellcode:
#include <stdio.h> int mult(int a,int b){ if(a==0||b==0)return 0; if(a==1)return b; if(b==1)return a; int prod=b+mult(a-1,b); //Summe aus b+b+b+b+...+b mit a Summanden return prod; } int main(){ int a; int b; printf("Geben Sie zwei ganze Zahlen ein\n"); scanf("%d",&a); scanf("%d",&b); printf("%d * %d = %d\n",a,b,mult(a,b)); return 0; }
dank cde tut das prog was es tun soll.leider verstehe ich noch nicht,wie diese rekursive geschichte funktioniert,wo sich funktionen selber nochmal aufrufen.hatten das kurz in einer vorlesung aber habs bis dato nich verstanden.
kann mir das mal jemand erklären oder eine hinreichende informationsquelle geben??danke im voraus
-
dank cde tut das prog was es tun soll.
Ich frag mich nur: wer ist cde?
kann mir das mal jemand erklären oder eine hinreichende informationsquelle geben??
Das ist in der Litertur sicher schon oft breitgetreten worden. Wenn du dich nicht von der Prefixnotation verwirren lässt: ich finde, dass das hier gut erklärt wird:
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.1In C wird während der Ausführung eines Programms für jeden Aufruf einer Funktion ein gewisser Speicherbereich mit Argumentstack usw. benutzt werden. Wenn die Funktion dann sich selbst aufruft, wird einfach ein neuer Bereich geschaffen, deshalb ist das an sich unproblematisch (solange der Speicher nicht ausgeht). In diesem Sinn könnte man sagen, dass die Funktion gar nicht sich selbst aufruft, sondern eine neue Instanz von sich.
-
Wenn dir das Prinzip unklar ist, hilft es dir vielleicht, die Aufrufe für kleinere Zahlen wie 4*5 oder sowas einfach mal mit Stift und Papier durchzuspielen.
-
non~fricky schrieb:
Wenn dir das Prinzip unklar ist, hilft es dir vielleicht, die Aufrufe für kleinere Zahlen wie 4*5 oder sowas einfach mal mit Stift und Papier durchzuspielen.
danke an alle,
hab das mal durchexerziert auf papier und alles ergibt sinn...
ich danke euch allen vielmals und werd mal noch ein paar funktionen zur übung schreiben.
danke danke danke