Raku kurss / Pamati / Funkciju izveide un izsaukšana / Vingrinājumi / Rekursīvais faktoriāls

Risinājums: Rekursīvais faktoriāls

Faktoriāls ir ļoti produktīvs uzdevums, jo to var atrisināt dažādos veidos. Šoreiz mēs izmantojam rekurziju, kas nozīmē, ka funkcija tiek izsaukta no pašas sevis.

Kods 1

Šeit ir risinājuma kods. Ņemiet vērā, ka jums ir jāpārbauda nosacījums, lai apturētu rekurziju, pretējā gadījumā tā turpināsies bezgalīgi.

sub factorial($n) {
    if $n < 2 {
        return 1;
    }
    else {
        return $n * factorial($n - 1);
    }
}

say factorial(10);

🦋 Atrodiet programmu failā recursive-factorial.raku.

Kods 2

Gadījumos, kā parādīts šajā kodā, bieži vien ir labāk izmantot if postfix formas, lai uzreiz atgrieztos no funkcijas. Šī pieeja padara kodu skaidrāku un noņem daudz iekavu un pieturzīmju.

sub factorial($n) {
    return 1 if $n < 2;
    return $n * factorial($n - 1);
}

say factorial(10);

🦋 Atrodiet atjaunināto programmu failā recursive-factorial-2.raku.

Piemērs

Palaidiet programmu un pārbaudiet rezultātu. Starp citu, vai jūs zinājāt, ka 10! ir precīzs sekunžu skaits sešās nedēļās?

$ raku exercises/functions/recursive-factorial.raku
3628800

Nākamais uzdevums

💪 Intervāla funkcija

Kursa navigācija

Asociatīvie datu tipi / Hashes interpolācija   |   Vairāk par funkcijām

Šī lapa ir automātiski tulkota ar ChatGPT 4o. Oriģinālais teksts angļu valodā.

Šīs lapas tulkojumi: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська