codice:
#include<iostream>
using namespace std;
double Differenza(double *n,int indice);
int main()
{
double n[3]={8,4,5};
cout << Differenza(n,2);
return 0;
}
double Differenza(double *n,int indice)
{
//Se ci sono solo due valori la differenza minima è la differenza fra questi due
if (indice == 1)
return n[indice]-n[indice-1];
//-
//Trovo la differenza fra gli ultimi 2 elementi
double this = (n[indice]-n[indice-1]);
//-
//Trovo la differenza minimima degli elementi precedenti
double rec = Differenza(n, indice-1);
//-
//Ritorno il valore minore
return (rec < this) ? rec : this;
//-
}
codice:
#include<iostream>
#include <limits>
using namespace std;
double Differenza(double *n,int indice,double min);
int main()
{
double n[3]={8,4,5};
//Args: l'array, l'indice >, il > valore possibile (Gli altri saranno neccessariamente <)
cout << Differenza(n,2,numeric_limits<double>::max());
//-
return 0;
}
double Differenza(double *n, int indice, double min)
{
//Se l'indice è 0 non esiste un valore precedente: ritorno l'argomento min (differenza minima)
if (indice == 0)
return min;
//-
//Args: array, indice-1 (calcolo differenza < sui valori precedenti), differenza ultimi due elemnti se questa è < di min, altrimenti min
return Differenza(n, indice - 1, ((n[indice]-n[indice-1]) < min) ? (n[indice]-n[indice-1]) : min);
}