Mer 21 Agosto, 09:35:50 - 2019

Autore Topic: Esercizio programmazione  (Letto 628 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Khalen

  • Studente
  • *
  • Post: 11
  • FeedBack: +0/-0
    • Mostra profilo
Esercizio programmazione
« il: Sab 30 Maggio, 15:48:43 - 2015 »
Salve a tutti, stavo facendo un esercizio di programmazione ma non capisco una cosa. Allego subito una copia del programmino così posso spiegare il mio problema: http://pastebin.com/mBgx2Nhh

L'esercizio riguarda una semplice ricerca binaria in C, il punto è che provando a far girare la il programma nella versione con il metodo ricorsivo, nel momento in cui arriva al punto in cui v[half] = x (ovvero quando in teoria ha trovato l'elemento richiesto) il programma non esegue quel "return 1", e quindi ritorna 0 anche se in realtà l'elemento è stato trovato !!  In allegato metto anche uno screen dell'output prodotto (con le varie stampe di debug).
Aiutatemi a capire il problema per favore! Grazie anticipatamente :)
« Ultima modifica: Sab 30 Maggio, 15:51:56 - 2015 da Khalen »

Offline Khalen

  • Studente
  • *
  • Post: 11
  • FeedBack: +0/-0
    • Mostra profilo
Re:Esercizio programmazione
« Risposta #1 il: Sab 30 Maggio, 16:27:48 - 2015 »
Ho risolto ! Scrivo comunque la risoluzione se a qualcuno dovesse servire.
Era un problema di stack delle chiamate, si corregge mettendo:
if(v[half] < x) return rec_cerca(v, n, x, half+1, b);
      else return rec_cerca(v, n, x, a, half);
effettivamente prima dopo che arrivavo alla chiamata finale, riscendevo la stack e ritornavo alle chiamate precedenti che (non avendo ancora ritornato niente) continuavano il metodo fino alla fine e ritornavano 0!