Pagina 1 di 1
Ho l'esame di fondamenti...qualcuno ci capisce di C ???
Inviato: lun 21 feb , 2011 12:01 am
da zot
Codice: Seleziona tutto
#include <stdio.h>
int funz (int,int);
int main ()
{
int a=10,b=12,t;
t=funz(a,b);
printf("t=%d\n\n",t);
return 0;
}
int funz (int x,int y)
{
if(y!=0)
return(y+funz(y,x%y));
else
return x;
}
Qualcuno mi spiega perche' "t=funz(a,b)" risulta essere t=funz(10,12)=26.
Cioe' dove tiro fuori il valore 26 risultante dalla funz(a,b)=funz(x,y) ??
Re: Ho l'esame di fondamenti...qualcuno ci capisce di C ???
Inviato: lun 21 feb , 2011 10:53 am
da paolomat75
Beh function è una funzione ricorsiva finche y è diverso da zero.
La prima volta gli viene passato 10 e 12, la seconda volta 12 e 2, e la seconda volta 2 e 0.
Sommando tutti i dati a ritroso dovrebbe ritornarti 26.
Spero di essere stato abbastanza chiaro.
Scusa ma sono molto preso, comunque se non hai capito cerco di essere più chiaro.
Buona giornata
Paolo
Re: Ho l'esame di fondamenti...qualcuno ci capisce di C ???
Inviato: mar 22 feb , 2011 2:30 am
da zot
Ti ,ringrazio,sputandoci sangue sono riuscito a capire il procedimento...ne posto un'altra,se qualcuno mi aiuta....uan birrrraaaaa!!!!
Codice: Seleziona tutto
#include <stdio.h>
int fun (int *);
int main ()
{
int a[]={0,1,2,1,1,3},y;
y=fun(a);
printf("y=%d\n",y);
return 0;
}
int fun (int a[])
{
if(a[0] == 1)
return 2;
else
return fun(a+1) + 2*fun(a+2);
}
In particolare non riesco a capire quali parametri e/o valori di a vengono passati di volta in volta alla funzione.....help..