Prikaz jedne poruke
Stara 26.12.2015, 13:00   #1
nighthawk
.
 
Avatar korisnika nighthawk
 
Član od: 2.11.2005.
Poruke: 2.532
Zahvalnice: 113
Zahvaljeno 710 puta na 498 poruka
Određen forumom Javascript - međusobno rekurzivne funkcije

Naišao sam na ovaj primer na internetu i ne mogu baš da shvatim kako radi. Console log u a() funkciji ispisuje 1,6,16 i 36 tokom 4 iteracije, a krajnji rezultat je 42. Dakle, u poslednje izvršenju funkcije a, foo je 36 (linija 5), a na liniji 6 foo dobija i 3*2 iz funkcije b.

Zašto i kako se to dešava? Ja sam očekivao da će kranji rezultat biti 36, tj. da će a() vratiti prvi rezultat veći od 20 bez obzira na sve ostalo.

Kod:
var val = a(1);
console.log("Krajnji rezultat: " + val); // 42

function a(foo){
	console.log(foo); // 1,6,16,36
	if(foo > 20) return foo;
	return b(foo+2);
}

function b(foo){
	return c(foo) + 2;
}

function c(foo){
	return a(foo*2);
}
nighthawk je offline   Odgovor sa citatom ove poruke