Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    16

    Problema Metodo ricorsivo per trovare massimo di un array

    Ciao a tutti devo fare come esercizi un metodo ricorsivo che trovi il massimo tra gli elementi di un array di double io ho provato a scrivere questo:

    codice:
    class MassimoArray{
      
       public static void main (String[] args) {
       double[] x = {1.2,1.4,1.6,1.8,1.1};
          System.out.println(Massimo(max,0,0));
       }
       
       static double Massimo(double[] x, double max, int indice, double massimo ) {
       if ( indice < x.length  ) {
    	   max = (max,indice + 1);
         if (x[indice] > max) {  
    	  max = x[indice];
    	 }
        
    	}
     	
    	return max;
        }
    }
    Ma genere questi 2 erroei:

    javac "MassimoArray.java"
    ----------
    1. ERROR in MassimoArray.java (at line 5)
    System.out.println(Massimo(max,0,0));
    ^^^
    max cannot be resolved
    ----------
    2. ERROR in MassimoArray.java (at line 10)
    max = (max,indice + 1);
    ^
    Syntax error on token ",", . expected
    ----------
    2 problems (2 errors)
    Compilazione fallita.
    dove è l'errore e dai giorni che mi sono bloccato

  2. #2
    mi sa che hai un pò di confusione

    nel main la variabile max non viene inizializzata

    nella riga 10 a max vuoi assegnare max = (max , indice + 1); max è un double come fai a mettergli max e indice??

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    16
    Ho risolto non genere più errori

    codice:
    class MassimoArray{
      
       public static void main (String[] args) {
       double[] x = {1.2,1.4,1.6,1.8,1.1};
       System.out.println(max(x));
       }
       //ho invocato il metodo Massimo così altrimenti mi dava errore in compilazione
    public static double max(double[] x){
    return Massimo(x,0,x.length-1);
    }//fine massimo
    
    
      static double Massimo(double[] x, double max, int i  ) {
     
               if (i<=x.length) { // se i e minore della lunghezza del array devo incrementare i fino a raggiungere la      lunghezza dell array
                  max=( i+1);
        
               if (x[i] > max) {  // se l'array x con lunghezza i  è maggiorne del massimo max sarà uguale a x[i]
    	          max = x[i];
    	    }
     	
    	
        }
    	return max;
      }
    }
    Funziona quasi completamente solo che non mi trova il massimo dell'array di double cioè 1.8 ma come risultato
    mi genere 5.0 come mai?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.