Vous êtes sur la page 1sur 8

Fundamentos de Programao1

RECURSO
Recurso X Iterao
Slides 13 Linguagem C
Prof. SIMO
Jean Marcelo SIMO

Iterao
At ento, aprendemos a construir programas com funes iterativas cujas repeties so baseados em
comandos/estruturas de laos de repetio. Estas estruturas so o for ( ) { }, o while () { } e o do{ }while ();.
Um exemplo simples de funo iterativa fatiterativo() que calcula o fatorial de um inteiro...

fatiterativo ( int n )
{
int resposta;
resposta = 1;

int main()
{
int num;
int resp;
printf ( " Programa de clculo de fatorial. \n " );
printf ( " Digite um nmero: \n " );
scanf ( "%i", &num );

for ( int t = 1; t <= n; t++ )


{
resposta = resposta * t ;
}

if ( num > 0 )
{
resp = fatiterativo ( num );
printf ( " O fatorial calculado com : %i \n \n ", resp);
}
else
{
printf ( " Nmero inapropriado." );
}

return resposta;
}

Obs.: Iterao = Repetio.

system ( "Pause" );
return 0;
}

Recurso
Em linguagem C funes podem chamar a si mesmas. A funo recursiva se um
comando no corpo da funo a chama. Recurso o processo de definir algo em termos de
si mesmo e , algumas vezes, chamado de definio circular. Um exemplo simples de
funo recursiva fatrecursivo() que calcula o fatorial de um inteiro... (Schildt, 1997)
fatrecursivo ( int n )
{
int resposta;
if ( 1 == n )
{
return 1;
}

int main()
{
int num,
int resp;
printf ( " Programa de clculo de fatorial. \n " );
printf ( "Digite um nmero: \n" );
scanf ("%i", &num );
if ( num > 0 )
{
resp = fatrecursivo ( num );
printf ( "O fatorial calculado : %i. \n \n", resp);
}
else
{
printf ( "Nmero inapropriado." );
}

// chamada recursiva
resposta = n * fatrecursivo ( n-1 ) ;
return resposta;
}

system ("Pause");
return 0;
}

Entendendo a Recurso A
fatrecursivo ( int n )
{
int resposta;
if ( 1 == n )
{
return 1;
}
// chamada recursiva
resposta = n * fatrecursivo ( n-1 );
return resposta;
}

fatrecursivo (2)
fatrecursivo (1)
retorna 1
2=2x1

retorna 2;

Entendendo a Recurso B
fatrecursivo ( int n )
{
int resposta;
if ( 1 == n )
{
return 1;
}
// chamada recursiva
resposta = n * fatrecursivo ( n-1 );
return resposta;
}

fatrecursivo (3)
fatrecursivo (2)
fatrecursivo (1)
retorna 1
2=2x1

retorna 2;
6=3x2
retorna 6

Entendendo a Recurso C
fatrecursivo ( int n )
{
int resposta;
if ( 1 == n )
{
return 1;
}
// chamada recursiva
resposta = n * fatrecursivo ( n-1 );
return resposta;
}

fatrecursivo (4)
fatrecursivo (3)
fatrecursivo (2)
fatrecursivo (1)
retorna 1
2=2x1

retorna 2;
6=3x2
retorna 6
24 = 4 x 6
retorna 24

Exerccios A
a) Validar as variveis nos dois exemplos anteriores, i.e. nas
funes iterativa e recursiva para o clculo do fatorial
(incluindo o questo de fatorial de zero...).

b) Elaborar e/ou pesquisar outros exemplos de funes


recursivas.

c) Refletir e escrever sobre as diferenas de funes


iterativas e de funes recursivas.

Exerccios B
Implementar
a
funo
de
clculo
exponenciao de forma recursiva.

de

A funo ter como parametros uma base e um


expoente.

Escreva a funo para clculo do n-simo termo


da srie de Fibonacci utilizando recursividade.
Pesquisar sobre a srie de Fibonacci.

Vous aimerez peut-être aussi