Ho l'esame di fondamenti...qualcuno ci capisce di C ???

Contenuti off-topic

Moderatore: Federico.Lagni

Rispondi
Avatar utente
zot
Messianic Network master
Messaggi: 1274
Iscritto il: mer 17 nov , 2004 1:13 am
Località: Teramo
Contatta:

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) ??
Se c'è soluzione perchè t'arrabbi?
Se non c'è soluzione perchè t'arrabbi?


http://www.zotbox.net
paolomat75
Messianic Network master
Messaggi: 2965
Iscritto il: ven 29 gen , 2010 10:25 am
Località: Prov di GE

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
Non cade foglia che l'inconscio non voglia (S.B.)
Avatar utente
zot
Messianic Network master
Messaggi: 1274
Iscritto il: mer 17 nov , 2004 1:13 am
Località: Teramo
Contatta:

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..
Se c'è soluzione perchè t'arrabbi?
Se non c'è soluzione perchè t'arrabbi?


http://www.zotbox.net
Rispondi