Está en la página 1de 3

Ejemplos de recursividad:

1.

Obtenga la suma de los n primeros nmeros enteros positivos


1 si x=1 otro caso x+sumapositivos(x-1)

sumapositivos(x)=

en lisp: CL-USER 15 : 3 > (defun sumapositivos(x) (if(= x 1) 1 (+ x (sumapositivos(- x 1))))) SUMAPOSITIVOS CL-USER 16 : 3 > sumapositivos 4 10
2.

Obtenga el exponente de u n numero dado la base y el exponente a y b de manera recursiva


1 exponente=0 base*power(base,exponete-1) otro caso

power(a,b)= En lisp:

CL-USER 10 : 3 > (defun power(base exponente) (if(eq exponente 0) 1 (* base (power base (- exponente 1))))) POWER CL-USER 11 : 3 > power 4 5 1024
3.

Obtener el producto de 2 enteros a y b de manera recursiva


a a+producto(a,b-1) b=1 otro caso

producto(a,b)=

En lisp: CL-USER 17 : 3 > (defun producto(a b) (if(eq b 1) a (+ a (producto a (b 1))))) PRODUCTO CL-USER 19 : 3 > producto 80 50 4000

4 .calcule el ensimo numero fibonacci mediante una funcin

recursiva
0 fibo(n)= 1 si n=1 si n=2

fibo(n-1)+fibo(n-2) lisp: CL-USER 17 > (defun fibo(a) (if(eq a 1) 0 (if(eq a 2) 1 (+ (fibo(- a 1)) (fibo(- a 2)))))) FIBO CL-USER 18 > fibo 5 3

1.

Calcule el numero de atomos :

En Lisp: CL-USER 26 : 1 > (defun cuentaatomos (expr)(cond ((null expr) 0)((atom expr) 1)(t (+ (cuenta-atomos (first expr))(cuenta-atomos (rest expr)))))) CUENTAATOMOS l CL-USER 25 : 1 > cuentaatomos '(a b c) 3
6.- Suma los elementos de un vector Pseudocodigo: int suma_vec(int v [], int n) { if (n == 0) return v [n]; else return suma_vec(v, n - 1) + v [n]; }
Lisp: (defun Suma_vec(v[], n) (if ( equals n 0)( v[n]) (+ ( Suma_vec(v, - n 1 )) (v[n])))

7.Producto escalar
CL-USER 37 : 4 > (defun producto (vector1 vector2)(if (or (null vector1) (null vector2))0(+ (* (first vector1) (first vector2))(producto (rest vector1) (rest vector2)))))

PRODUCTO CL-USER 32 : 1 > (producto '(2 3) '(4 5)) 23

8. Calcule el factorial de un numero


En lisp: CL-USER 1 > (defun facto(x) (if(eq x 0) 1 (* x (facto(- x 1))))) FACTO CL-USER 3 > facto 5 120 9. Programa que devuelve la cantidad de sublistas de un lista L. (defun contar(lista) (if (endp lista) 0 (if (listp (car lista)) (+ 1 (contar(rest lista))) (contar(rest lista)))))

CL-USER 6 : 1 > (contar '(1 (2 3 4) 43 (5 4 7) (3 2 1))) 3 10. Programa que suma los nmeros de una lista CL-USER 8 > defun sumalista(l) (if(endp l) 0 (+ (car l) (sumalista (cdr l)))) SUMALISTA CL-USER 9 > sumalista '(4 5 6) 15

También podría gustarte