El arte de programar en R Un leguaje para la estadística - page 107

CAPÍTULO 5. ESCRITURA DE FUNCIONES
104
## [1] 120
MiFact
(
8
)
## [1] 40320
MiFact
(
-
20
)
## NULL
Para poder utilizar adecuadamente esta técnica, necesariamente debe exis-
tir en la función por lo menos una salida
no recursiva
, que en el caso del ejemplo
está dada por la condición
if (n==0) ...
. Por otra parte, se debe tener cuida-
do con casos que pudieran llevar a una
recursión infinita
, que en el ejemplo se ha
resuelto para números negativos o cualquier otra cosa regresando un resultado
NULL
7
.
Otro ejemplo, que se abordó en la sección 4.2.4 en la página 68, con una
técnica de programación diferente, es el de la generación de los números de
Fibbonacci. La definición matemática es la siguiente:
F
(
n
) =
 
1
si,
n
=
0
1
si,
n
=
1
F
(
n
2
) +
F
(
n
1
)
si,
n
>
1
(5.2)
Nuevamente, la
traducción
de esta definición al código recursivo de R es casi
directa, como se muestra a continuación:
fibbonacci
<-
function
(
n
) {
if
(n
%in%
c
(
0
,
1
))
return
(
1
)
# salida no recursiva
if
(n
>
1
)
return
(
fibbonacci
(n
-
2
)
+
fibbonacci
(n
-
1
)
)
return
(
NULL
)
# caso fallido
}
# Ahora usemos la función:
fibbonacci
(
8
)
## [1] 34
fibbonacci
(
10
)
## [1] 89
7
El lenguaje tiene su propia función para la generación de factoriales de números, a saber:
factorial()
.
1...,97,98,99,100,101,102,103,104,105,106 108,109,110,111,112,113,114,115,116,117,...198
Powered by FlippingBook