-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathseccion_4_4.c
More file actions
57 lines (43 loc) · 1.11 KB
/
Copy pathseccion_4_4.c
File metadata and controls
57 lines (43 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
Sección 4.4. - Recursión
Objetivo: Entenderla idea de una función que se llama a sí misma.
Qué es factorial?
5! = 5 * 4 * 3 * 2 * 1
4! = 4 * 3 * 2 * 1
1! = 1
0! = 1 (por definición)
Idea recursiva:
n! = n * (n - 1)!
"Dibujo" de la pila recursiva (ejemplo n = 4):
Llamadas (bajando):
factorial(4)
-> 4 * factorial(3)
-> 3 * factorial(2)
-> 2 * factorial(1)
-> factorial(1) regresa 1 (caso base)
Regresos (subiendo):
factorial(1) = 1
factorial(2) = 2 * 1 = 2
factorial(3) = 3 * 2 = 6
factorial(4) = 4 * 6 = 24
La "pila" se puede imaginar como capas:
cada llamada espera a que regrese la siguiente
*/
#include <stdio.h>
int factorial(int n) {
// Caso base: condición que detiene la recursión
if (n < 1) {
return 1;
}
// Paso recursivo:
// la función se llama a sí misma con un problema más pequeño
return n * factorial(n - 1);
}
int main(void) {
int n;
printf("Ingresa un número entero (>= 0): ");
scanf("%d", &n);
// Por ahora asumimos entrada válida
printf("%d! = %d\n", n, factorial(n));
return 0;
}