Curso de Raku / Esenciales / Más sobre funciones / Ejercicios / Factorial con multi-funciones

Solución: Factorial con multi-funciones

Este ejercicio trata nuevamente sobre factoriales. De hecho, la tarea nos permite ilustrar más características de Raku.

Al calcular un factorial comenzando desde el número dado y descendiendo, necesitas detenerte cuando el número llega a 1. Con multi-funciones, puedes lograr eso extrayendo el caso con $n == 1 a una multi-función separada.

Código

Aquí está la solución:

multi sub factorial(1)  { 1 }
multi sub factorial($n) { $n * factorial($n - 1) }

say factorial(@*ARGS[0].Int);

🦋 Encuentra el programa en el archivo factorial-with-multi-functions.raku.

Salida

$ raku exercises/more-on-functions/factorial-with-multi-functions.raku 5
120

Comentario

Ten en cuenta que el argumento de entrada se convierte explícitamente a un entero: @*ARGS[0].Int. Esto es para prevenir un bucle infinito cuando el número de entrada es 1. En este caso, el tipo de parámetro pasado a la función factorial es IntStr, y la primera variante múltiple no puede capturar la llamada. En contraste, cuando factorial(2 - 1) se llama recursivamente, el argumento de la función es un entero, lo que hace posible llamar a la primera variante.

Crear y llamar funciones / Valores predeterminados   |   Funciones integradas para imprimir

Esta página está traducida automáticamente con ChatGPT 4o. Texto original en inglés.

Traducciones de esta página: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська