Quote Originariamente inviata da iugin1974 Visualizza il messaggio

Secondo: ogni volta che chiami quantiTrue, setti h nuovamente a 0.

Prova così:
codice:
class U {
    
    private static int h = 0;
    
    public static void main(String[] args) {
        
        boolean a[] = {true,true,false,true,false,true,true,true,true};
        int x;
        System.out.println("Inserisci x");
        x = 0;
        int n = quantiTrue(a,x);
        System.out.println("Ci sono "+n+" elementi TRUE");
    }
    
    
    static int quantiTrue(boolean a[], int x) {
        
        if(x < a.length) {
            if(a[x] == true) {
                h = h+1;
            }
             quantiTrue(a,x+1);
        }
        
        return h;
    }
}
Un saluto

Eugenio
Mettere una variabile "globale" non è una buona pratica, soprattutto quando si può risolvere in maniera decisamente migliore:

codice:
private static int countTrue(boolean[] array, int currentIndex)
{
    int trueFound = 0;

    if ( currentIndex < array.length )
    {
        if ( array[currentIndex] )
        {
            trueFound++;
        }

        trueFound += countTrue(array, currentIndex + 1);
    }

    return trueFound;
}