elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ayuda.funcion recursiva
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda.funcion recursiva  (Leído 1,563 veces)
jkaszr

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ayuda.funcion recursiva
« en: 20 Abril 2017, 01:47 am »

tengo esta serie: 1, 2, 6, 42, 1806,y necesito hallar el valor qeu sigue, lo hize de esta forma, ahora necesito hacerlo con una funcion recursiva pero no se como.
  
Código
  1. int numero=1;
  2.       int cont=1;  
  3.        while(cont<6){      
  4.        numero=numero*(numero+1);    
  5.        cont++;      
  6.        }    
  7.        System.out.println(numero);


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 20 Abril 2017, 01:48 am por engel lex » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: ayuda.funcion recursiva
« Respuesta #1 en: 21 Abril 2017, 01:08 am »

La recursividad consiste en una función que se llama a sí misma y que tiene determinadas premisas:

- La primera llamada siempre es desde fuera.
- Debe tener un punto de detención, una condición que una vez cumplida finalice la recursión.
- Para que sea útil (y no solo se reinvoque sin ton ni son), algunas variables deben estar disponibles entre llamadas y otras podrían ser temporales (no sobreviven al salir de la  función).

Si primero creamos una solución para la serie (fíjate que yo propongo otra solución distinta a la tuya (la que tu pones es más sencilla), solo con el propósito de que veas que a veces hay más de una solución):

Usamos Array() como contenedor de la serie, y k como el contador de iteración.
Lo primero es inicializar el primer valor de la serie:
Código:
Array(0)=1
Bucle para k desde 1 a 5
   Array(k) = Array(k-1)² + Array(k-1)
   imprimir Array(k)
fin bucle

Ahora para ser recursivo, lo que hace el bucle en cada ciclo, debe hacerse en cada llamada a la función, por tanto las variables que deben 'sobrevivir' entre llamadas son el valor (n) y k, de paso los metemos también en el array... fíjate que se podría ignorar 'n' como tal y operar siempre sólo con el valor dle array pasando donde convenga Array(k-1), etc...

Código:
Se hace la primera llamada:
llamar a SerieConRecursion(1,0)

funcion SerieConRecursion(n, k)
    array(k)=n
    n = (n² + n)
    k = (k + 1)
    si (k < 5) luego
        llamar SerieConRecursion(n, k)
    en otro caso
        array(k)=n  <--- esta línea solo se ejecutará una vez
    fin si
fin funcion


« Última modificación: 21 Abril 2017, 01:12 am por NEBIRE » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con función recursiva.
Programación C/C++
Javi.24 1 2,476 Último mensaje 16 Junio 2012, 05:41 am
por GuzmanG
AYUDA Función Recursiva
Programación C/C++
dvigon 6 3,303 Último mensaje 20 Diciembre 2013, 02:13 am
por dvigon
Funcion recursiva
Programación C/C++
Albertocn 9 3,913 Último mensaje 19 Febrero 2014, 19:50 pm
por leosansan
Programacion con Funcion Recursiva Ayuda
Programación C/C++
DRinoa 2 1,777 Último mensaje 11 Octubre 2015, 12:53 pm
por user-marcos
ayuda con este programa con funcion recursiva
Programación C/C++
mikany 3 2,145 Último mensaje 7 Febrero 2017, 11:18 am
por do-while
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines