Autor Zpráva
rexi
Profil *
Zdravim,

mám funkci:

function fact($number) {
    if ($number > 0) {
        return $number*fact(--$number);
    } else {
        return 1;
    }
}

s --$number to vrátí 0, s ($number - 1) to vrátí dobrý výsledek. Zajímalo by mě, proč, proč nefunguje predekrementace, to že nefunguje $number-- to je jasný, ale neleze mě do hlavy proč nefunguje --$number.

Díky :)
Keeehi
Profil
Protože ta predekrementace zmenší i to první $number na řádku.

Pokud by jsi chtěl použít predekrementaci, šlo by to takto:
function fact($number) {
    if ($number > 0) {
        $cur = $number;
        return $cur*fact(--$number);
    } else {
        return 1;
    }
}
ale je to zbytečnost. Správně je to s tou -1.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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