Il seguente programma calcola la parte intera inferiore di $lg_a(n)$. Come potete vedere facendolo girare, lo calcola bene. e solo quando deve ritornare il risultato dalla funzione al main si trasforma magicamente in -1!!!
#include<stdlib.h>
#include<stdio.h>
int in_inf_log(int a, int b, int n, int k);
main()
{
int a,n;
scanf("%d",&a);
printf("\n\n");
scanf("%d",&n);
printf("\n\n %d \n\n",in_inf_log(a,a,n,1));
system("pause");
return 0;
}
int in_inf_log(int a, int b, int n,int k)
{
if(a*b>n) {printf("\n%d\n\n",k);return k;}
else {k++;in_inf_log(a*b,b,n,k);}
}