Autor Zpráva
Timy
Profil
Zkouším si něco napsat v Javascriptu a nepochopil jsem příkaz return v rekurzi:

<script>
function pokus(cislo, res)
{
  alert(fac(3, "čau "));
}

function fac(n, nes)
{
  alert("nesmysl:" + nes);
  if(n==0)
    return nes;
  else
  {
    nes += "ahoj ";
    fac((n-1), nes);
  }
}
</script>


Očekávám, že to vrátí řetězec "čau ahoj ahoj ahoj". Ono to všechno probíhá v pohodě, ty alerty na začátku druhé funkce mi vždycky vypisují co mají ("čau" -- "čau ahoj" -- "čau ahoj ahoj" ...), ale nakonec mi funkce stejně vrátí undefined a finální alert ve funkci "pokus" mi taky vyhodí "undefined". Když to nenechám iterovat (cislo je nula hned na začátku), tak mi funkce normálně vrátí "čau". Kde mám prosím chybu?
ah01
Profil
Timy
Patrně ti chybí jedno „return“.
function fac(n, nes)
{
  alert("nesmysl:" + nes);
  if(n==0)
    return nes;
  else
  {
    nes += "ahoj ";
    return fac((n-1), nes);
  }
}
Timy
Profil
ah01
A jo, díky :-).

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0