Raku kurss / Pamati / Vairāk par funkcijām / Vingrinājumi / 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
120
Komentā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
← Funkciju izveide un izsaukšana / Noklusējuma vērtības | Iebūvētās drukāšanas funkcijas →
Šī lapa ir automātiski tulkota ar ChatGPT 4o. Oriģinālais teksts angļu valodā.
Šīs lapas tulkojumi: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська