Ciao

ci sono un paio di errori logici nel codice.
Primo errore:
if(x <= a.length) {
dovrebbe essere
if(x < a.length) {
perché gli array iniziano da 0 e arrivano al n. elementi - 1

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