• Nenhum resultado encontrado

• Definições recursivas

N/A
N/A
Protected

Academic year: 2022

Share "• Definições recursivas"

Copied!
20
0
0

Texto

(1)

Introdução à Programação

Recursão

(2)

Tópicos Principais

• Recursão

• Definições recursivas

• Funções Recursivas

• Implementação

• Comportamento

(3)

Definições Recursivas

• Em uma definição recursiva um item é definido em termos de si mesmo, ou seja, o item que está sendo definido aparece como parte da definição;

• Em todas as funções recursivas existe:

– Caso base (um ou mais) cujo resultado é imediatamente conhecido.

– Passo recursivo em que se tenta resolver um sub-problema do

problema inicial.

(4)

Definições Recursivas

Exemplo: o fatorial de um número

 

>

×

= =

0 ,

)!

1 (

0 ,

! 1

n se n

n

n n se

Caso BASE Caso BASE

Passo Recursivo

(5)

Definições Recursivas

Exercício: forneça a definição recursiva para a operação de potenciação

 

>

×

=

=

0 ,

0 ,

1

) 1

(

se n

x x

n x

n

se

n

Caso BASE Caso BASE

Passo Recursivo

(6)

Funções Recursivas

• Definição:

– Uma função recursiva é aquela que faz uma chamada para si mesma. Essa chamada pode ser:

• direta: uma função A chama a ela própria

• indireta: função A chama uma função B que, por sua vez, chama A

-- Recursao direta function func_rec(n)

...

func_rec(n-1) ...

end

(7)

-- Função recursiva para cálculo do fatorial function fat(n)

if n == 0 then return 1 else

return n*fat(n-1) end

end

Funções Recursivas

• Exemplo: função recursiva para cálculo de fatorial

 

>

×

= =

0 ,

)!

1 (

0 ,

! 1

n se n

n

n n se

Caso BASE

Passo Recursivo

(8)

-- Função recursiva para cálculo de potenciacao function pot (x, n)

if n == 0 then return 1 else

return x*pot(x,n-1) end

end

Funções Recursivas

• Exercício: função recursiva para cálculo de potenciação

Caso BASE

Passo Recursivo

 

>

×

=

=

0 ,

0 ,

1

) 1

(

se n

x x

n

x

n

se

n

(9)

Funções Recursivas

• Comportamento:

– quando uma função é chamada recursivamente, cria-se um ambiente local para cada chamada

– as variáveis locais de chamadas recursivas são independentes

entre si, como se estivéssemos chamando funções diferentes

(10)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

end

- 3

r

-

n f fat(3)

(11)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

- 2

- 3

r n f fat(3)

n fat(2)f

(12)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

end

- 1

- 2

- 3

r

-

n f fat(3)

n fat(2)f

n f fat(1)

(13)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

- 0

- 1

- 2

- 3

r n f fat(3)

n fat(2)f

n f fat(1)

n f fat(0)

(14)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

end

1 0 - 1

- 2

- 3

r

-

n f fat(3)

n fat(2)f

n f fat(1)

n f fat(0)

(15)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

1 1 - 2

- 3

r n f fat(3)

n fat(2)f

n f fat(1)

(16)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

end

2 2 - 3

r

-

n f fat(3)

n fat(2)f

(17)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

6 3

r n f fat(3)

(18)

Funções Recursivas

-- Função recursiva para cálculo do fatorial function fat (n)

if n == 0 then f = 1

else

f = n * fat(n-1) end

return f end

-- Função principal function main ()

n = 3

r = fat ( n )

print(“Fatorial de “..n..“ = “..r.. “) return

end r

6

(19)

Funções Recursivas

• Exemplo: série de Fibonacci

 

 

>

− +

=

=

=

1 se

), 2 (

) 1 (

1 se

1,

0 se

, 0 )

(

n n

fib n

fib n

n n

fib

Passo Recursivo Caso BASE2 casos

BASE

(20)

Funções Recursivas

• Exemplo: série de Fibonacci

-- Calculo da serie de Fibonacci function fib (n)

if n == 0 then return 0

elseif n == 1 then return 1

else

return (fib(n-1) + fib(n-2)) end

Referências

Documentos relacionados

Certifique-se de que o menu Definição > Definição de Controlo está definido para LAN, e que o menu Definição > Poupança Energia está definido para Baixo ou Desligado caso

Técnica Superior de 2.ª classe no Gabinete Jurídico-Administrativo da Polícia Municipal da Câmara Municipal da Amadora, de março de 2005 a outubro de 2006 Adjunta do

O pior resultado em relação aos outros tratamentos para peso e comprimento foi apresentado pelos ani- mais submetidos aos fotoperíodos 0L:24D (21,90 mm e 1,44 g) e 14L:10D – natural

Se este produto contiver ingredientes com limites de exposição, pode ser necessário monitorizar o pessoal, a atmosfera do local de trabalho ou a monitorização biológica para

Item 1 - Reagente de Kovac´s p/ Teste de Indol (solução alcoólica 5% p-dimetilaminobenzaldeído) reagente p/ prova bioquímica, teste de indol. Não confundir com regente de Kovac´s

 Escrever código para utilizar serviços de sistema de mensagens (por exemplo, SQS, SNS)  Usar o Amazon ElastiCache para criar um cache de banco de dados.  Usar o

[04] Para montar o grill prenda a bandeja coletora de gordura à base (Base de água) pelo suporte do elemento de aquecimento.7. Utilizando O suporte do elemento

volume compatível (5 µL para colunas com 4,6 mm d.i. As sugestões de otimização apresentadas neste artigo visam a extrair o máximo de efi ci- ência de um sistema HPLC