António Roberto Software
a.roberto@mail.telepac.pt

Linguagens de Programação I
2º ano da Licenciatura em Informática de Gestão

Aula de 13 de Março de 2001

Factorial

Versão iterativa
Versão recursiva

long Factorial( int n )
{

int i;
long fact;

fact = 1;
for ( i = 1 ; i <= n ; i++ )

fact = fact * i;

return fact;

}

long Factorial( int n )
{

if ( n == 0 ) return 1;

return n * Factorial( n-1);

}

 

MaximoDivisorComum

Versão iterativa
Versão recursiva

int MaximoDivisorComum( int n1, int n2 )
{

int Dividendo, Divisor, Resto;

if ( n1 > n2 )
{

Dividendo = n1;
Divisor = n2;

}
else
{

Dividendo = n2;
Divisor = n1;

}

do
{

Resto = Dividendo % Divisor;
if ( Resto != 0 )
{

Dividendo = Divisor;
Divisor = Resto;

}

} while ( Resto != 0 );

return Divisor;

}

// Chama a função recursiva mdc
int MaximoDivisorComum( int n1, int n2 )
{

int Dividendo, Divisor;

if ( n1 > n2 )
{

Dividendo = n1;
Divisor = n2;

}
else
{

Dividendo = n2;
Divisor = n1;

}

return mdc( Dividendo, Divisor );

}

// Asserção : Dividendo > Divisor
int mdc( int Dividendo, int Divisor )
{

if ( Divisor == 0 ) return Dividendo;

return mdc( Divisor, Dividendo % Divisor );

}

// Versão recursiva alternativa
int mdc( int Dividendo, int Divisor )
{

int Resto;

Resto = Dividendo % Divisor;

if ( Resto == 0 ) return Divisor;

return mdc ( Divisor, Resto );

}