Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Recursividad, Apuntes de Sistemas de Información Gerencial

Asignatura: Fundamentos de Programación, Profesor: Elena García Barriocanal, Carrera: Sistemas de Información, Universidad: UAH

Tipo: Apuntes

2013/2014

Subido el 01/12/2014

pokoto-1
pokoto-1 🇪🇸

3

(2)

8 documentos

1 / 23

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Recursividad
Elena G. Barriocanal
Universidad de Alcal´a
Noviembre de 2013
Elena G. Barriocanal (Universidad de Alcal´a) Fundamentos de la programaci´on Noviembre de 2013 1 / 14
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Vista previa parcial del texto

¡Descarga Recursividad y más Apuntes en PDF de Sistemas de Información Gerencial solo en Docsity!

Recursividad

Elena G. Barriocanal

Universidad de Alcal´a

Noviembre de 2013

Definici´on

La recursividad permite definir un objeto o proceso en funci´on de s´ı mismo.

Es ´util para resolver problemas por descomposici´on en subproblemas. Los

subproblemas tienen id´entica estructura al problema original, pero el caso

que resuelven est´a reducido o es m´as peque˜no.

Definition

Un objeto recursivo es aquel que

forma parte de s´ı mismo o se

define en funci´on de s´ı mismo

Definition

Una funci´on recursiva es aquella

que contiene llamadas a ella

misma.

n! = n * (n -1)!

Ejemplo: Algoritmo

Multiplicar un n´umero sin utilizar el operador de multiplicaci´on.

Cualquier n´umero multiplicado por 1 es ese n´umero, es el caso b´asico.

Ejemplo: Algoritmo

Multiplicar un n´umero sin utilizar el operador de multiplicaci´on.

Cualquier n´umero multiplicado por 1 es ese n´umero, es el caso b´asico.

Para multiplicar 6 por 4 podemos hacer la siguiente descomposici´on:

((Sumamos 6 a la multiplicaci´on de 6 por 3)).

Ejemplo: Algoritmo

Multiplicar un n´umero sin utilizar el operador de multiplicaci´on.

Cualquier n´umero multiplicado por 1 es ese n´umero, es el caso b´asico.

Para multiplicar 6 por 4 podemos hacer la siguiente descomposici´on:

((Sumamos 6 a la multiplicaci´on de 6 por 3)).

El problema original es 6*4 y lo hemos reducido a una operaci´on de

suma y a la resoluci´on del subproblema 6*3.

Podemos descomponer 63 en 6 + (62) y 62 en 6+(61).

Ejemplo: C´odigo en C

float multiplicar ( int n , int m ) { float res ; if ( m ==1) // caso base res = n ; else res = n + multiplicar (n , m -1) ; return res ; }

Ejemplo: Factorial

float fact ( int n ) { float res ; if ( n ==1) res =1; else res = n * fact (n -1) ; return res ; }

Ejemplo: Fibonacci

int fibonacci ( int n ) { int aux =0; if ( n == 1 || n == 0) aux = n ; else aux = fibonacci (n -2) + fibonacci (n -1) ; return aux ; }

Ejemplo: Qu´e hace el siguiente c´odigo?

void invertirLectura ( int n ) { int i ; if ( n ==1) { scanf ( " %d " , & i ) ; printf ( " %d " , i ) ; } else { scanf ( " %d " , & i ) ; invertirLectura (n -1) ; printf ( " %d " ,i ) ; } return ; }

Entrada: 1 2 3 4 5

Salida: 5 4 3 2 1

Ejemplo: Pal´ındromo

Ejemplo: Suma contenido vector

Ejemplo: Suma contenido vector

int suma ( tVectorEnteros v , int ini , int fin ) { int aux =0; if ( fin == ini ) aux = v [ ini ]; else aux = v [ ini ] + suma (v , ini +1 , fin ) ; return aux ; }

Ejemplo: Mostrar los elementos de un vector

void imprimir ( int v [] , int ini , int fin ) { if ( fin == ini ) printf ( " %d " , v [ ini ]) ; else { printf ( " %d " , v [ ini ]) ; imprimir (v , ini +1 , fin ) ;} return ; }

Ejemplo: Mostrar los elementos de un vector

void imprimir ( int v [] , int ini , int fin ) { if ( fin == ini ) printf ( " %d " , v [ ini ]) ; else { printf ( " %d " , v [ ini ]) ; imprimir (v , ini +1 , fin ) ;} return ; }

y si queremos que imprima el contenido al rev´es?