JavaScript dla opornych

0

Cześć . Mam problem z wizualizacją jak dokładnie działa poniższy kod :

function fac(n){
  if ( n == 0 ){
    return 1;
  }else{
    return fac(n-1) * n;
  }
}
console.log(fac(8))

O dziwo dla mnie ten kod działa prawidłowo . Czy ktoś bardziej doświadczony byłby tak łąskaw wytłumaczyć mi jak debilowi co tu się wyprawia ? Rozumiem zwracać funkcje w funkcji ale z rekurencją zapisaną w taki sposób spotykam się pierwszy raz .

1
function fac(n){
  if ( n == 0 ){
    return 1;
  }else{
    var x = fac(n-1);
    return x * n;
  }
}
console.log(fac(8))

A coś takiego rozumiesz?

0

Dziękuje . Kolega z pracy już mi to wytłumaczył . Dla osób które nie rozumieją tego kodu : fac(8) = fac(7) * 8 = fac(6) *7*8 = fac(5) *6*7*8 = .... . W końcu dojedziemy do 1*2*3*4*5*6*7*8 i to właśnie będzie wynik . Dziękuje wszystkim którzy chcieli mi pomóc .

4

Myślę, że obrazek wyraża więcej niz 1000 słów:
factorial.gif

3

ja jeszcze dodam od siebie jedną wizualizację
screenshot-20170404163059.png
zrobiłem całą bibliotekę do tego rodzaju wizualizacji: https://www.npmjs.com/package/san-escobar (nazwałem ją San Escobar, żeby było modnie).

1 użytkowników online, w tym zalogowanych: 0, gości: 1