Problema Ricorsione

di il
2 risposte

Problema Ricorsione

Scrivere un programma che dato un array a in input di n elementi
verifichi usando un metodo ricorsivo se l'array è composto da valori per cui vale la seguente elementi con indice
i<=1, nessuna condizzione
per i > 1 a = a[i-1] * a[i-2];
esempio
2,3,6,18 è true
se l'array è vuoto o se devo considerare al piu di due elementi ok..


public class ESERCIZIO_RICORSIONE_ESAME {

    public static boolean Ricorsione(int[] a,int i) {

        //caso base
    if(a.length-1== i || a[0]==0) {
         return true;  
        }
     if (a[i] == a[i-1] * a[i-2]) {
         return Ricorsione(a,i+1);
     } else {
         return false;
     }
    }
        
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("inserire un array");    
        int[] b = new int[scan.nextInt()];
        
        for(int i=0; i<b.length-1;i++) {
            System.out.println("inserire valori");
            b[i]= scan.nextInt();
            
        }
        Ricorsione(b,0);
    }
    
Non riesco a capire dove sia il problema...
probabilmente sarà nel secondo if ma non saprei come gestirla

2 Risposte

  • Re: Problema Ricorsione

    Non si è capita bene la traccia. Veramente il professore ti ha scritto che per i <= 1 vale la condizione che non c'è nessuna condizione?
  • Re: Problema Ricorsione

    Vabbè comunque
    
        public static boolean Ricorsione(int[] a,int i) {
         if(i >= a.length)
             return true;  
            
         if (a[i] == a[i-1] * a[i-2]) 
             return Ricorsione(a,i+1);
      
          return false;
        }
    
    
    E la ricorsione parte da i = 2.

    Ovviamente devi tenere conto del return value
Devi accedere o registrarti per scrivere nel forum
2 risposte