Un esercizio con vettore da risolvere con la ricorsione. Vogliamo trovare tutte le somme delle triple di numeri adiacenti di un dato vettore e restituire la somma maggiore. L’esercizio, può essere risolto anche in modo non ricorsivo, ovviamente.
Prendiamo come esempio [1,2,3,4,5,6], vanno analizzate le triple: [1,2,3], [2,3,4], [3,4,5], [4,5,6], trovando che la tripla 4+5+6 è quella con somma maggiore di tutte.
Altro esempio [10,2,3], [2,-3,4], [3,4,5], [4,-5,6] trovando 10+2+3 come maggiore delle triple.
Facciamo un esempio generico risparmiando qualche riga di codice e fissando lunghezza ed elementi iniziali del vettore. Al lettore la sfida di generalizzare queste due componenti.
#include <iostream>
using namespace std;
#define LUNGHEZZA 6
int triplaSommaMax(int vettore[], int indice)
{
int somma = 0;
int sommaReturn =0;
if (indice < LUNGHEZZA -2)
{
somma= vettore[indice] +
vettore[indice+1] +
vettore[indice+2];
indice++;
sommaReturn = triplaSommaMax(vettore, indice);
}
cout << somma <<" " << sommaReturn <<endl;
if (somma > sommaReturn )
return somma;
return sommaReturn;
}
int main() {
int vettore[LUNGHEZZA] = {100,2,3,4,5,6};
cout << triplaSommaMax(vettore,0);
return 0;
}
Ultima modifica 3 Ottobre 2022