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!!!! :D

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..