Você está na página 1de 5

Programa c ao I

Licenciatura em Engenharia Inform atica 20112012

PI VBN Recurs ao Stack Diagrams para Fun c oes Recursivas Recurs ao Innita

Vitor Beires Nogueira Escola de Ci encias e Tecnologia Universidade de Evora


1.1

Recurs ao
PI VBN Recurs ao

Uma fun c ao pode chamar/invocar outra fun c ao Uma fun c ao pode chamar-se a si pr opria.
Exemplo

Stack Diagrams para Fun c oes Recursivas Recurs ao Innita

d e f countdown ( n ) : i f n <= 0 : print ( Blastoff ! ) else : print (n) countdown ( n 1) countdown ( 1 0 )

1.2

Exemplo de chamadas recursivas: countdown(3)


PI VBN Recurs ao Stack Diagrams para Fun c oes Recursivas

A execu c ao de countdown come ca com n = 3, e uma vez que n e maior que 0, escreve o valor 3 e chama-se a si pr opria . . . A execu c ao de countdown come ca com n = 2, e uma vez que n e maior que 0, escreve o valor 2 e chama-se a si pr opria . . .
A execu c ao de countdown come ca com n = 1, e uma vez que n e maior que 0, escreve o valor 1 e chama-se a si pr opria . . .
A execu c ao de countdown come ca com n = 0, e uma vez que n n ao e maior que 0, escreve Blasto! e retorna

Recurs ao Innita

A fun c ao countdown com n = 1 retorna

A fun c ao countdown com n = 2 retorna A fun c ao countdown com n = 3 retorna

1.3

Stack diagram: countdown(3)


PI VBN Recurs ao Stack Diagrams para Fun c oes Recursivas Recurs ao Innita

1.4

Recurs ao Innita
PI VBN

O que acontece se a recurs ao n ao chegar ao caso base?


Recurs ao innita Exemplo

Recurs ao Stack Diagrams para Fun c oes Recursivas Recurs ao Innita

def recurse(): recurse()

Exemplo

File "recurse.py", line 2, in recurse recurse() ... File "recurse.py", line 2, in recurse recurse() RuntimeError: maximum recursion depth exceeded

1.5

Você também pode gostar