/******************************************************************************
Scrivere il codice di una funzione ricorsiva int f(int n)
che restituisce quante coppie di cifre uguali in posizioni adiacenti
ci sono nel numero n, nel caso n sia negativo restituisce 0.
Ad es: f(551122) restituisce 3, f(5122) restituisce 1, f(9) restituisce 0.
*******************************************************************************/
#include <iostream>
using namespace std;
int funzione(int n)
{
cout<<"funzione chiamata per ";
cout<<n<<endl;
if(n<10)
{
cout<<"f("<<n<<")=0 ho una cifra sola o il numero è negativo"<<endl;
return 0;
} //caso base
else
{
cout<<"f("<<n<<")=f(";
int cifra1=n%10;
int n1=n/10;
cout<<n1<<")+";
int cifra2=n1%10;
if(cifra1==cifra2)
{
cout<<"1 le due cifre più a destra sono uguali"<<endl;
int f=1+funzione(n1);
cout<<"f("<<n<<")="<<f<<endl;
return f;
}
else
{
cout<<"0 le due cifre più a destra sono diverse"<<endl;
int f=funzione(n1);
cout<<"f("<<n<<")="<<f<<endl;
return f;
}
}
}
int main()
{
funzione(55122);
return 0;
}