Rutas
/
F#
F#
/
Ejercicios
/
Precio de la pizza
Precio de la pizza

Precio de la pizza

Ejercicio de aprendizaje

Introducción

Recursión

La capacidad de definir algo en términos de sí mismo se llama recursión. En F#, la recursión aparece sobre todo 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á lugar a un error de compilación. Por lo tanto, hay que optar explícitamente por la recursión.

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. En un tipo de unión discriminada recursivo, uno o varios de sus casos 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 reparte 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 suplemento:

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

Cuando los clientes hacen un pedido, se añade un suplemento si solo piden una o dos pizzas:

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

Tienes tres tareas, cada una de las cuales trabajará 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 añadir 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 del pedido de pizzas:

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

¿Listo para empezar Precio de la pizza?

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