Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Esercizio ricorsione

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2017
    residenza
    Terni
    Messaggi
    22
    certo eccolo. Sono alle prime armi mi scuso in anticipo se ho scritto qualcosa di troppo grave....

    codice:
    public static String decimale(int[] a, int i){
            
            String m;
            String dec = "";
            if(i==a.length){
                m = String.valueOf(a[0]);
                dec = "";
            }
            else{
                m = decimale(a,i+1);
                
                if(a[i]>Integer.parseInt(m)){
                    m = String.valueOf(a[i]);
                        dec = m + decimale(a,i+1);
                }
            }
        return dec;
        }
    Ultima modifica di LeleFT; 06-02-2017 a 17:35 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Al3xiei Visualizza il messaggio
    codice:
    public static String decimale(int[] a, int i){
            
            String m;
            String dec = "";
            if(i==a.length){
                m = String.valueOf(a[0]);
                dec = "";
            }
            else{
                m = decimale(a,i+1);
                
                if(a[i]>Integer.parseInt(m)){
                    m = String.valueOf(a[i]);
                        dec = m + decimale(a,i+1);
                }
            }
        return dec;
        }
    Se ho capito l'obiettivo, ti dico subito che Integer.parseInt NON ti serve. Inoltre il tuo codice è comunque contorto, dovresti cercare di ragionare un po' meglio. Se l'input è un array { 4, 3, 2, 1 } e l'obiettivo è di ottenere "1234", allora semplicemente ad ogni invocazione del metodo prendi il elemento i-esimo (0 al primo livello di invocazione, 1 al secondo, ecc...), convertilo in String (valueOf va bene) e poi lo dovrai appendere dietro la stringa che ti fornisce il livello di invocazione successivo.

    Cosa dovrebbe succedere se l'array passato è "vuoto"? Io direi: una stringa vuota.


    P.S. tutto questo si può scrivere con un semplicissimo if-else in cui entrambi i rami hanno un semplice return. Ovvero 4 righe di codice pulite pulite, graffe escluse. E usando l'operatore "condizionale" ?: si può scrivere in 1 sola riga.
    Ultima modifica di andbin; 07-02-2017 a 10:55
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2017
    residenza
    Terni
    Messaggi
    22
    l'esercizio chiede questo da quanto ho capito anche io, ti riporto il testo.....cmq credo sia un problema di ricerca e ordinamento.

    Sia n un intero la cui rappresentazione in base dieci è ckck-1ck-2...c1c0 (dove ogni simbolo ci è una cifra compresa tra 0 e 9) e sia a un array di int in cui l'elemento a[i] è pari a ci (0  i  k). Scrivere un metodo di classe ricorsivo che riceve in input a e restituisce n.
    Ad esempio, se a fosse il seguente array:
    3 2 4 5
    a0 a1 a2 a3

    il metodo dovrebbe restituire il valore 5432.

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.