Tracks
/
F#
F#
/
Ejercicios
/
Precios de pizza
Precios de pizza

Precios de pizza

Ejercicio de aprendizaje

Introducción

Recursión

La capacidad de que algo se defina en términos de sí mismo se llama recursión. En F#, la recursión se encuentra más comúnmente en las funciones recursivas, que son funciones que se llaman a sí mismas.

Una función recursiva necesita tener al menos un caso base y al menos un caso recursivo. Un caso base devuelve un valor sin volver a llamar a la función. Un caso recursivo vuelve a llamar a la función, modificando la entrada para que en algún momento coincida con el caso base.

Las funciones recursivas se definen como las funciones normales, pero con el modificador rec. Sin este modificador, una función no podrá llamarse a sí misma y cualquier intento de hacerlo dará como resultado un error de compilación. Por eso, la recursión hay que habilitarla de forma explícita.

let rec factorial x =
    // Base case
    if x = 1 then
        1
    // Recursive case
    else
        x * factorial (x - 1)

F# también admite tipos recursivos mediante tipos de unión discriminada. Un tipo de unión discriminada recursivo tiene uno o más de sus casos que hacen referencia al propio tipo de unión discriminada en sus datos. Al igual que las funciones recursivas, los tipos recursivos deben tener un caso base. A diferencia de las funciones recursivas, los tipos recursivos no usan la palabra clave rec.

type RussianDoll =
    | Doll                 // Base case
    | Layer of RussianDoll // Recursive case

Instrucciones

En este ejercicio trabajas en una pizzería que hace entregas a domicilio.

Ofreces tres tipos de pizza:

  • Margherita: $7
  • Caprese: $9
  • Formaggio: $10

Los clientes también pueden elegir dos opciones adicionales por un pequeño cargo extra:

  1. Salsa extra: $1
  2. Ingredientes extra: $2

Cuando los clientes hacen un pedido, se agrega un cargo adicional si solo piden una o dos pizzas:

  • 1 pizza: $3
  • 2 pizzas: $2

Tienes tres tareas, y cada una trabaja con pizzas y su precio.

1. Define los tipos de pizza y las opciones

Define la unión discriminada Pizza para representar los tipos de pizza y las dos opciones adicionales que se pueden agregar a una pizza:

  • Margherita
  • Caprese
  • Formaggio
  • ExtraSauce
  • ExtraToppings

2. Calcula el precio de la pizza

Implementa la función pizzaPrice para calcular el precio de una pizza:

pizzaPrice Caprese
// => 9

3. Calcula el precio de un pedido

Implementa la función orderPrice para calcular el precio de un pedido de pizzas:

orderPrice [Margherita; Formaggio]
// => 19
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
F# Exercism

¿Todo listo para empezar Precios de pizza?

Regístrate en Exercism para aprender y dominar F# con 18 conceptos148 ejercicios y mentoría humana real, todo gratis.