07. Recursividad en Scheme

07. Recursividad en Scheme - Lenguajes de programacin...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Lenguajes de programacin Recursividad en el lenguaje SCHEME Recursividad En trminos simples: Un mdulo es recursivo, si contiene una llamada a s mismo. Es la abstraccin para la estructura de repeticin en el lenguaje. 1 Ejemplo Definicin recursiva del factorial de un nmero: N! vale 1 N! vale N*(N-1)! N*(N si N = 0 si N > 0 EJERCICIO: Programar la funcin en Scheme. Pensando recursivamente... 1 Analizar cul es el caso ms simple o pequeo del problema que se quiere resolver... Este caso, debe de tener una solucin clara y directa... no recursiva... Este caso se considera el CASO BASE de la recursividad, y determina una condicin de salida de la repeticin implcita que se d en la recursividad. 2 Pensando recursivamente... 2 Analizar cmo se resuelve el problema general, suponiendo que ya se tiene un procedimiento que resuelve el siguiente caso ms pequeo o simple del problema... Este caso, plantea la solucin recursiva del problema... La solucin al siguiente caso ms pequeo, la da la llamada recursiva... Programando la Recursividad Tpicamente, Tpicamente una rutina recursiva tiene la siguiente forma: condicin salida? s Si se cumple el caso ms pequeo Generar el resultado para ese caso Si NO Generar el resultado de la solucin recursiva solucin base no solucin recursiva 3 Ejemplo de Recursividad El clculo del Factorial para un nmero. (define (factorial n) (if (<= n 1) 1 ( * n ( factorial (- n 1))))) (factorial 3) (factorial 3) = 3 * (factorial 2) Ejemplo de Recursividad (define (factorial n) (if (<= n 1) 1 ( * n ( factorial (- n 1))))) (factorial 3) (factorial 2) = 3 * Factorial de 2 = 2 * (factorial 1) 4 Ejemplo de Recursividad (define (factorial n) (if (<= n 1) 1 ( * n ( factorial (- n 1))))) (factorial 3) (factorial 2) (factorial 1) = 3 * Factorial de12 = = 2 * Factorial de 1 Ejemplo de Recursividad (define (factorial n) (if (<= n 1) 1 ( * n ( factorial (- n 1))))) (factorial 3) (factorial 2) = 3 * Factorial de 2 =2*1 5 Ejemplo de Recursividad (define (factorial n) (if (<= n 1) 1 ( * n ( factorial (- n 1))))) (factorial 3) =3*2 Ejemplo de Recursividad (define (factorial n) (if (<= n 1) 1 ( * n ( factorial (- n 1))))) (factorial 3) =6 6 Fundamentacin Porqu es vlido el pensamiento recursivo? Base formal: La INDUCCIN MATEMTICA como mtodo de comprobacin. comprobacin EJEMPLO: Induccin matemtica Demostrar que: j=0 j= n (n*(n+1))/2 Base de la induccin: Con 0 C n=0, j=0 y 0, (n*(n+1))/2 (0*(0+1))/2 0 Lo cual es vlido 7 EJEMPLO: Induccin matemtica Paso de induccin: HIPTESIS: Suponer que para n=k lo que se desea probar es cierto. Entonces: j=0 j= k (k*(k+1))/2 Entonces, tambin debe ser cierto para n = k+1 EJEMPLO: Induccin matemtica k+1 j=0 j = 0 + 1 + 2 + ... + k + (k+1) = (0 + 1 + 2 + ... + k) + (k+1) = (k*(k+1))/2 + (k+1) = ( k*(k+1) + 2k + 2 ) / 2 = (k2 + 3k + 2 ) / 2 = ((k+1) (k+2)) / 2 =j j=0 k+1 Que es lo que se quera demostrar !! 8 EJEMPLO Implementar una funcin que sirva para elevar un nmero a cierta potencia. CASO BASE: Elevar a la potencia 0... El resultado es 1... 1 Suponer que ya se tiene ab-1 Solucin ab = a * ab-1 CASO GENERAL: ab Implementacin (define (eleva a b) (if (zero? b) 1 (* a (eleva a (- b 1))))) 9 EJERCICIOS Funcin que obtiene la sumatoria desde 0 hasta n. Funcin que despliega `n' veces el letrero "Hola!". Funcin que despliega la secuencia de `n' hasta 1. EJERCICIOS Funcin que cuenta la cantidad de dgitos de un nmero entero. Funcin que obtiene el n-simo nmero de la serie de Fibonacci (1, 1, 2, 3 5, 8 13 21 34,...) (1 1 2 3, 5 8, 13, 21, 34 ) 10 ...
View Full Document

This note was uploaded on 05/12/2010 for the course ITC TC2006 taught by Professor Conant during the Spring '10 term at ITESM.

Ask a homework question - tutors are online