• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JavaScript problem ze zwracaniem wartości przez funkcję rekurencyjną

Object Storage Arubacloud
0 głosów
913 wizyt
pytanie zadane 27 listopada 2016 w JavaScript przez Bartos Użytkownik (610 p.)

Witam,

napisałem prostą funkcję w JS liczącą największy wspólny dzielnik dwóch liczb algorytmem Euklidesa (za pomocą odejmowania). Problem polega na tym, że funkcja w tej postaci pokazanej poniżej zwraca undefined:

function nwd(a,b)
    {
      var c = a - b;

      if (c == b)
      	return c;

      if (c < b)
        nwd(b,c);
      else
        nwd(c,b);
    }

document.write(nwd(1989,867));

Natomiast gdy wyświetlenie wartości w przeglądarce dodam bezpośrednio wewnątrz funkcji to działa poprawnie:

function nwd(a,b)
    {
      var c = a - b;

      if (c == b) {
      	document.write(c);
      	return false;
      }

      if (c < b)
        nwd(b,c);
      else
        nwd(c,b);
    }

nwd(1989,867);

Jest w stanie ktoś wytłumaczyć dlaczego tak się dzieje?

1 odpowiedź

+2 głosów
odpowiedź 27 listopada 2016 przez Comandeer Guru (601,110 p.)
wybrane 27 listopada 2016 przez Bartos
 
Najlepsza

return nwd – inaczej funkcja przecież nie zwróci tego, co zwróci wywołanie nwd.

komentarz 27 listopada 2016 przez Bartos Użytkownik (610 p.)
Nooo tak, dzięki :)

Podobne pytania

0 głosów
1 odpowiedź 231 wizyt
pytanie zadane 26 marca 2017 w JavaScript przez Mimoid Użytkownik (760 p.)
0 głosów
0 odpowiedzi 1,712 wizyt
pytanie zadane 29 stycznia 2017 w Algorytmy przez Corvo Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 239 wizyt
pytanie zadane 11 września 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)

92,567 zapytań

141,420 odpowiedzi

319,615 komentarzy

61,952 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...