Raku kurss / Pamati / Funkciju pamati / Vairāk par funkcijām / Exercises / Faktoriāls ar daudzfunkcijām
Risinājums: Faktoriāls ar daudzfunkcijām
Šis uzdevums atkal ir par faktoriāliem. Patiesībā, uzdevums ļauj mums ilustrēt vairāk Raku valodas iespēju.
Aprēķinot faktoriālu, sākot no dotā skaitļa un ejot uz leju, jums ir
jāpārtrauc, kad skaitlis sasniedz 1. Ar vairāku funkciju palīdzību jūs
varat to panākt, izdalot gadījumu ar $n == 1 atsevišķā
vairāku funkcijā.
Kods
Šeit ir risinājums:
multi sub factorial(1) { 1 }
multi sub factorial($n) { $n * factorial($n - 1) }
say factorial(@*ARGS[0].Int);🦋 Atrodiet programmu failā factorial-with-multi-functions.raku.
Izvade
$ raku exercises/more-on-functions/factorial-with-multi-functions.raku 5
120Komentārs
Ņemiet vērā, ka ievades arguments tiek skaidri konvertēts uz veselu
skaitli: @*ARGS[0].Int. Tas ir, lai novērstu bezgalīgu
ciklu, kad ievades skaitlis ir 1. Šajā gadījumā parametra
tips, kas tiek nodots factorial funkcijai, ir IntStr,
un pirmā vairāku varianta nevar uztvert izsaukumu. Savukārt, kad
factorial(2 - 1) tiek izsaukts rekursīvi, funkcijas
arguments ir vesels skaitlis, kas ļauj izsaukt pirmo variantu.
Kursa navigācija
← Faktoriāls ar daudzfunkcijām | Iebūvētās drukāšanas funkcijas →