Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    104

    [java] Ricerca binaria ricorsiva

    allora il primo elemento del vettore è il bersaglio da cercare, i restatnti son numeri inseriti in ordine crescente.
    Il programma compila ma non funziona e non capisco dove sbaglio.
    Durante l'esecuzione da l'errore alla riga 22, cioè alla prima volta che compare la ricorsione.


    import java.io.*;
    import java.util.*;

    public class trova{

    int[] vettore=new int[10];

    public static boolean trova( int sinistro ,int destro,int[] vettore){
    int num=vettore[0];
    boolean trovato=false;
    int[] app=vettore;
    int a,b;
    b=destro;
    a=sinistro;
    int mid=b/2;
    System.out.println(mid);
    if (vettore[mid]==num){
    trovato=true;
    }
    else{
    if (vettore[mid]<num){
    trova(mid+1,b, app);
    }
    else
    {trova(a,mid-1,app);
    }
    }

    return(trovato);

    }





    public static void main(String[]args){
    BufferedReader C = new BufferedReader (new InputStreamReader(System.in));
    String numeri="";

    try{
    System.out.println("Scrivi una serie di 10 numeri intervallati da uno '-'") ;
    numeri=C.readLine();
    }catch (Exception e){System.out.println("errore");}
    StringTokenizer tokenizer = new StringTokenizer(numeri,"-");
    int[] vett=new int[10];
    for(int i=0;i<10;i++){
    vett[i]=Integer.parseInt(tokenizer.nextToken());
    }
    for(int i=0;i<10;i++){
    System.out.println(vett[i]);
    }

    boolean cerca=false;
    cerca=trova(1,9,vett);
    if (cerca){
    System.out.println("trovato");
    }
    else{System.out.println("non trovato");}




    }


    }

    potreste gentilmente aiutarmi a trovare cosa non va?

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Un errrore è che non assegni a trovato il valore di ritorno delle chiamate ricorsive:

    import java.io.*;
    import java.util.*;

    public class trova{

    int[] vettore=new int[10];

    public static boolean trova( int sinistro ,int destro,int[] vettore){
    int num=vettore[0];
    boolean trovato=false;
    int[] app=vettore;
    int a,b;
    b=destro;
    a=sinistro;
    int mid=b/2;
    System.out.println(mid);
    if (vettore[mid]==num){
    trovato=true;
    }
    else{
    if (vettore[mid]<num){
    trovato = trova(mid+1,b, app);
    }
    else
    {trovato = trova(a,mid-1,app);
    }
    }

    return(trovato);

    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.