Somma max di tre numeri di un vettore con ricorsione in C++

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 29 Agosto 2022