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

    [JAVA] prodotto di due numeri con algoritmo ricorsivo

    Salve ragazzi, devo implementare un algoritmo ricorsivo che mi calcoli il prodotto tra 2 interi, io l'ho impostato cosi:

    codice:
    public class ric {
    	
    	public static int prodotto (int x, int y) {
    		
    		if (y==1) return x;//passo baso
    		else return  prodotto(x,y-1);
    		}
    	
    
    
    
    
    	public static void main(String[] args) {
    		
    		int a=5;
    		int y=9;
    		System.out.println(prodotto(a,y));
    		
    	}
    }
    il problema è che mi stampa solo 5
    vi ringrazio in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Beh... il passo ricorsivo è sbagliato.
    Se y non è uguale a 1 richiami la funzione passandogli y-1... alla fine arriverai a y = 1 e verrà restituito x. Da nessuna parte fai alcun calcolo (ovvero, il passo ricorsivo).

    Prova a ragiunarci un po' su...

    Questo è ciò che viene fatto dalla tua funzione, passo per passo (con y = 3 altrimenti diventa lunghino):


    codice:
    +-- prodotto(5, 3)
        3 == 1 ? No:
    +--+-- prodotto (5, 2)
           2 == 1 ? No:
    +--+--+-- prodotto (5, 1)
              1 == 1 ? Sì:
    +--+--+-- ritorno 5
    +--+-- ritorno 5
    +-- ritorno 5
    Stampo 5

    Ciao.
    Ultima modifica di LeleFT; 08-09-2014 a 13:36
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    12
    ho risolto XD


    codice:
    public static int prodotto (int x, int y) {
            
            if (y==1) return x;
            else return x+prodotto(x,y-1);
            
            }

    l'errore era che dimenticavo di aggiungere la 'x'
    Ultima modifica di LeleFT; 08-09-2014 a 15:28 Motivo: Aggiustati i tag CODE

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.