Niby wszystko jasne, ale dzieją się dziwne rzeczy, przynajmniej niezrozumiałe znowu dla mnie.
Napisałem taki kod, żeby przeanalizować działanie rekurencji takiej, o jakiej mówiłem w tym wątku:
public class Rekurencja {
public static void Req(char znak, int index)
{
if(index>0)
{
System.out.print(znak + "(" + index + ") ");
Req(znak, --index);
Req('p', --index);
}
}
public static void main(String args[])
{
Rekurencja.Req('k',4);
}
}
Otrzymuję taki wynik działania tego programu: k(4) k(3) k(2) k(1) p(1) p(2) p(1)
Nie mam pojęcia dlaczego. Rozpisałem wszystko powoli na kartce według tego, jak zrozumiałem wytłumaczony wcześniej przez Was problem. Ale chyba jednak dalej czegoś nie rozumiem. Mógłbym jeszcze się uprzeć że p(1) powinno się pojawić, ale jakim cudem potem jest p(2) w następnym wywołaniu?
Wywołałem funkcję z argumentem ** index=2**, wtedy działanie kończy się na k(1), więc pasowało mi, ale dla większych wartości wykonują się operacje, których nie rozumiem i prosiłbym o wytłumaczenie ;)