Geltungsbereich und Funktionen (verständnisschwierigkeiten beim ausgabe)
-
ich verstehe nicht warum die ausgabe 2010 ist
ich verstehe so:
1. wird f(2)aufgerufen cout << 2
2. dann f(0) desswegen cout << 0
3. i = 1 wegen f(1) cout << 1; i = 2 also nichtmehr kleiner als k und wird desswegen beendetwo ist mein fehler? was sehe ich nicht?
#include <iostream> using namespace std; void f(int k){ cout << k; // 1. 2 ausgegeben int i = 0; for(; i < k;i = i+1) f(i); // wegen f(0) wird 0 ausgegeben . i wird 1 und wird desswegen beim 2 . durchlauf } int main(){ f(2); cout << endl; return 0; }
-
khati schrieb:
wo ist mein fehler? was sehe ich nicht?
Dein Punkt 3. i ist nicht static, die verschiedenen Ebenen der Rekursion haben überhaupt nichts miteinander zu tun. Das i im f(1) ist ein ganz eigenes, welches von 0 an hochzählt und daher wird noch einmal f(0) aufgerufen.
-
ich frag mich grad wieso man einen rekursionsaufruf in einer schleife macht?
sich da im kopf rein zu denken ist naja etwas speziell...
-
Skym0sh0 schrieb:
sich da im kopf rein zu denken ist naja etwas speziell...
darum geht es wohl.