Algoritmo ricorsivo che calcoli somme cumulative in un array.

di il
1 risposte

Algoritmo ricorsivo che calcoli somme cumulative in un array.

Ho impiegato 30 minuti circa per ragionare e scrivere un pseudocodice .. ma poi per farlo funzionare, scrivendo il codice ....troppo di più... però dai non mi metto fretta !

questo è l'esercizio : si sommi al valore di ogni array i valori che lo precedono . naturalmente con metodo ricorsivo.
Siccome l'esercizio non specificava che metodo fare o fatto un void.
Cercavo di farne uno che restituisse lo stesso array modificato, ma mi stavo incasinando troppo.

si potrebbe ulteriormente semplificare secondo voi ?
	if (iMax == 0)
			System.out.println("Ogni elemento dell'array è stato sommato con tutti gli elementi che lo precedono");
		else {
			sommaCumulativa(a, iMax - 1);
			a[iMax] = a[iMax - 1] + a[iMax];
		}
		questo è l'output:

   2,  3,  1,  5,  6,  2,  7, 
Ogni elemento dell'array è stato sommato con tutti gli elementi che lo precedono
   2,  5,  6, 11, 17, 19, 26,

1 Risposte

  • Re: Algoritmo ricorsivo che calcoli somme cumulative in un array.

    neofitaJava ha scritto:


    si potrebbe ulteriormente semplificare secondo voi ?
    Certo!

    Volendo/potendo passare in modo furbo anche la somma in argomento, si può fare:
    public static void sommaCumulativa(int[] array, int idx, int somma) {
        if (idx < array.length) {
            sommaCumulativa(array, idx+1, array[idx] += somma);
        }
    }
    Da invocare inzialmente es.

    sommaCumulativa(unArray, 0, 0);
Devi accedere o registrarti per scrivere nel forum
1 risposte