Skip to content

Commit 94e8dda

Browse files
committed
#6 - Swift
1 parent 62e62e7 commit 94e8dda

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import Foundation
2+
3+
/*
4+
* EJERCICIO:
5+
* Entiende el concepto de recursividad creando una función recursiva que imprima
6+
* números del 100 al 0.
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Utiliza el concepto de recursividad para:
10+
* - Calcular el factorial de un número concreto (la función recibe ese número).
11+
* - Calcular el valor de un elemento concreto (según su posición) en la
12+
* sucesión de Fibonacci (la función recibe la posición).
13+
*/
14+
15+
16+
// Función recursiva que imprime números del 100 al 0
17+
func imprimirNumeros(numero: Int) {
18+
// Caso base: si el número es 0, lo imprimimos y terminamos
19+
if numero == 0 {
20+
print(numero)
21+
return
22+
}
23+
// Caso recursivo: si el número es mayor que 0, lo imprimimos y llamamos a la función con el número menos 1
24+
else if numero > 0 {
25+
print(numero)
26+
imprimirNumeros(numero: numero - 1)
27+
}
28+
}
29+
30+
31+
// Función recursiva que calcula el factorial de un número
32+
func factorial(numero: Int) -> Int {
33+
// Caso base: si el número es 1, devolvemos 1
34+
if numero == 1 {
35+
return 1
36+
}
37+
// Caso recursivo: si el número es mayor que 1, devolvemos el número multiplicado por el factorial del número menos 1
38+
else if numero > 1 {
39+
return numero * factorial(numero: numero - 1)
40+
}
41+
// Si el número es menor que 1, devolvemos un error
42+
else {
43+
return -1
44+
}
45+
}
46+
47+
48+
// Función recursiva que calcula el valor de un elemento en la sucesión de Fibonacci
49+
func fibonacci(posicion: Int) -> Int {
50+
// Caso base: si la posición es 1 o 2, devolvemos 1
51+
if posicion == 1 || posicion == 2 {
52+
return 1
53+
}
54+
// Caso recursivo: si la posición es mayor que 2, devolvemos la suma de los valores de las posiciones anteriores
55+
else if posicion > 2 {
56+
return fibonacci(posicion: posicion - 1) + fibonacci(posicion: posicion - 2)
57+
}
58+
// Si la posición es menor que 1, devolvemos un error
59+
else {
60+
return -1
61+
}
62+
}
63+
64+
65+

0 commit comments

Comments
 (0)