Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ejercicio Recursividad con Lista

Estas en el tema de Ejercicio Recursividad con Lista en el foro de C/C++ en Foros del Web. Buenas tengo unos inconvenientes a la hora de realizar este ejercicio Escriba una función recursiva que reciba un apuntador al primer nodo de una lista ...
  #1 (permalink)  
Antiguo 08/01/2015, 13:03
Avatar de Swastik  
Fecha de Ingreso: noviembre-2013
Mensajes: 9
Antigüedad: 10 años, 5 meses
Puntos: 1
Ejercicio Recursividad con Lista

Buenas tengo unos inconvenientes a la hora de realizar este ejercicio

Escriba una función recursiva que reciba un apuntador al primer nodo de una lista simple de números enteros y verifique si esta se encuentra ordenada en forma descendente.

lo que tengo hecho es lo siguiente...

Código C:
Ver original
  1. int descendente(NODO *frente)
  2. {
  3.      printf("\nELEM [%d] - -ELEM SIG [%d]",frente->elem,frente->sig->elem);
  4.      
  5.      
  6.      if(frente==NULL)
  7.      {
  8.        return 0;
  9.      }
  10.      else
  11.      {
  12.        if(frente->elem >= frente->sig->elem)
  13.        {
  14.          frente=frente->sig;
  15.          return 1;
  16.        }
  17.        else
  18.        {
  19.         frente=frente->sig;
  20.         return 0;
  21.        }          
  22.      }
  23.      
  24.      descendente(frente);
  25. }

retorno 1 para decir que esta ordenado descendentemente y 0 para lo contrario

El problema que veo es que solo me compara los 2 primeros elementos, por ejemplo si coloco 10 - 6 los compara y retorna 1 como debe ser, ahora si coloco 10 - 6 - 8 me retorna 1 y debería retornar 0;

creo que el problema esta en los retornos? ya que si se los quito me recorre la lista sin problemas...

gracias, saludos.
  #2 (permalink)  
Antiguo 11/01/2015, 01:54
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Ejercicio Recursividad con Lista

Si te fijas, no importa que camino elijas, todas las rutas tienen return antes de llegar al punto de recursión.

Con un poco de pseudocodigo:
Código:
funcion Checa:
    Si el nodo actual es nullo o el siguiente es nullo:
        retorna 1
    Si el valor del nodo actual y el siguiente nodo no cumplen con el orden:
        retorna 0
    retorna Checa(siguiente nodo)

Etiquetas: ejercicio, int, lista, recursividad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:27.