Escolar Documentos
Profissional Documentos
Cultura Documentos
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Edson Recurs ao
Deni ca o Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Recurs ao
A denic ao de um objeto e dita recursiva se ela se refere ao pr oprio elemento a ser denido
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Recurs ao
A denic ao de um objeto e dita recursiva se ela se refere ao pr oprio elemento a ser denido Uma denic ao recursiva tem duas partes: o caso base e as regras de constru c ao
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Recurs ao
A denic ao de um objeto e dita recursiva se ela se refere ao pr oprio elemento a ser denido Uma denic ao recursiva tem duas partes: o caso base e as regras de constru c ao No caso base, todos os elementos estruturais b asicos s ao listados
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Recurs ao
A denic ao de um objeto e dita recursiva se ela se refere ao pr oprio elemento a ser denido Uma denic ao recursiva tem duas partes: o caso base e as regras de constru c ao No caso base, todos os elementos estruturais b asicos s ao listados As regras de constru c ao determinam como os elementos s ao constru dos, e envolvem o pr oprio elemento
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
caso base: 0 N
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
caso base: 0 N regra de constru c ao: Se n N , ent ao (n + 1) N deni c ao de escopo: N ao h a outros elementos no conjunto N (isto e, n ao h a outras formas de se obter n umeros naturais)
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Denic ao de fatorial
Chamadas Recursivas
Chamadas de fun co es
n! =
1, se n = 0 n (n 1)!, se n > 0
Edson
EDA
Exerc cio
1. Compile e execute o c odigo fatorial.c
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Exerc cio
1. Compile e execute o c odigo fatorial.c 2. Identique o caso base da denic ao do fatorial
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Exerc cio
1. Compile e execute o c odigo fatorial.c 2. Identique o caso base da denic ao do fatorial 3. Identique a regra de constru c ao da denic ao do fatorial
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Exerc cio
1. Compile e execute o c odigo fatorial.c 2. Identique o caso base da denic ao do fatorial 3. Identique a regra de constru c ao da denic ao do fatorial 4. Execute o c odigo com as entradas 20 e 40. Justique os resultados obtidos
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
poss E vel determinar se um elemento pertence ou n ao a um conjunto de elementos denidos recursivamente aplicado a regra de construc ao sucessivamente, decompondo o elemento em elementos menores
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
poss E vel determinar se um elemento pertence ou n ao a um conjunto de elementos denidos recursivamente aplicado a regra de construc ao sucessivamente, decompondo o elemento em elementos menores Contudo, para encontrar o n- esimo termo da sequ encia, e necess ario passar por todos os elementos anteriores
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
poss E vel determinar se um elemento pertence ou n ao a um conjunto de elementos denidos recursivamente aplicado a regra de construc ao sucessivamente, decompondo o elemento em elementos menores Contudo, para encontrar o n- esimo termo da sequ encia, e necess ario passar por todos os elementos anteriores Em termos de implementa c ao, h a uma grande exig encia de mem oria
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
5 = 4 + 1, logo se 4 N , ent ao 5 N
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
5 4 3 2
= = = =
4 + 1, 3 + 1, 2 + 1, 1 + 1,
se se se se
4 N, 3 N, 2 N, 1 N,
5N 4N 3N 2N
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
5 4 3 2 1
= = = = =
4 + 1, 3 + 1, 2 + 1, 1 + 1, 1+0
se se se se
4 N, 3 N, 2 N, 1 N,
5N 4N 3N 2N
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
5 4 3 2 1
= = = = =
4 + 1, 3 + 1, 2 + 1, 1 + 1, 1+0
se se se se
4 N, 3 N, 2 N, 1 N,
5N 4N 3N 2N
Chamadas de fun co es
Como 0 N , ent a o 1, 2 , 3 , 4 , 5 N
Edson
EDA
Onde for poss vel, a troca de uma denic ao recursiva por uma denic ao direta, que n ao dependa de termos anteriores, leva a implementac oes mais ecientes
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Onde for poss vel, a troca de uma denic ao recursiva por uma denic ao direta, que n ao dependa de termos anteriores, leva a implementac oes mais ecientes A denic ao recursiva g (n ) = 1, se n = 0 2 g (n 1), se n > 0
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Onde for poss vel, a troca de uma denic ao recursiva por uma denic ao direta, que n ao dependa de termos anteriores, leva a implementac oes mais ecientes A denic ao recursiva g (n ) = 1, se n = 0 2 g (n 1), se n > 0
Chamadas Recursivas
Chamadas de fun co es
EDA
Edson Recurs ao
Deni ca o Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
No momento em que uma func ao e chamada, algumas tarefas s ao realizadas em plano de fundo para que o programa se comporte como esperado
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
No momento em que uma func ao e chamada, algumas tarefas s ao realizadas em plano de fundo para que o programa se comporte como esperado Se a func ao tem par ametros, eles s ao inicializados com os valores passados na chamada
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
No momento em que uma func ao e chamada, algumas tarefas s ao realizadas em plano de fundo para que o programa se comporte como esperado Se a func ao tem par ametros, eles s ao inicializados com os valores passados na chamada O sistema operacional tem que saber onde prosseguir ap os o encerramento da func ao chamada, de modo que o ponto de retorno e armazenado
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
No momento em que uma func ao e chamada, algumas tarefas s ao realizadas em plano de fundo para que o programa se comporte como esperado Se a func ao tem par ametros, eles s ao inicializados com os valores passados na chamada O sistema operacional tem que saber onde prosseguir ap os o encerramento da func ao chamada, de modo que o ponto de retorno e armazenado Quem chamou a func ao tem que ter acesso ao retorno da func ao chamada, logo uma area de mem oria e reservada para armazenar este valor
Edson EDA
Chamadas Recursivas
Chamadas de fun co es
Algumas informa c oes devem ser preservadas ao se chamar uma func ao, para se manter o estado correto do programa
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Algumas informa c oes devem ser preservadas ao se chamar uma func ao, para se manter o estado correto do programa Em relac ao a func ao que realizou a chamada de um outra func ao, devem ser preservadas as vari aveis locais e os seus par ametros
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Algumas informa c oes devem ser preservadas ao se chamar uma func ao, para se manter o estado correto do programa Em relac ao a func ao que realizou a chamada de um outra func ao, devem ser preservadas as vari aveis locais e os seus par ametros Tamb em deve ser armazenado o endere co de mem oria que aponta para o lugar onde o programa deve prosseguir ap os a execu c ao da func ao chamada
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Registro de ativac ao
A area de dados que armazena as informac oes listadas anteriormente e denominada registro de ativa c ao ou stack frame
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Registro de ativac ao
A area de dados que armazena as informac oes listadas anteriormente e denominada registro de ativa c ao ou stack frame O registro de ativac ao e alocado dinamicamente na pilha de execu c ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Registro de ativac ao
A area de dados que armazena as informac oes listadas anteriormente e denominada registro de ativa c ao ou stack frame O registro de ativac ao e alocado dinamicamente na pilha de execu c ao Este registro existe enquanto a func ao que ele se refere est a sendo executada
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Registro de ativac ao
O registro de ativac ao guarda todas as informac oes necess arias para a correta execu c ao e retorno de uma func ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Registro de ativac ao
O registro de ativac ao guarda todas as informac oes necess arias para a correta execu c ao e retorno de uma func ao Um registro de ativc ao e criado quando a func ao e chamada e e destru do no retorno da func ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Registro de ativac ao
O registro de ativac ao guarda todas as informac oes necess arias para a correta execu c ao e retorno de uma func ao Um registro de ativc ao e criado quando a func ao e chamada e e destru do no retorno da func ao Apenas o registro de ativac ao da func ao main() ca ativo durante toda a execuc ao do programa
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Chamadas Recursivas
Chamadas de fun co es
main()
Edson
EDA
Chamadas Recursivas
Chamadas de fun co es
main()
Edson
EDA
Chamadas Recursivas
Chamadas de fun co es
f1()
main()
Edson
EDA
O endere co de retorno aponta para o enderec o de mem oria que cont em a instruc ao imediamente ap os a chamada da func ao
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
O endere co de retorno aponta para o enderec o de mem oria que cont em a instruc ao imediamente ap os a chamada da func ao O ponteiro do registro da func ao que fez a chamada aponta para o elemento antecessor da pilha de execuc ao
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
O endere co de retorno aponta para o enderec o de mem oria que cont em a instruc ao imediamente ap os a chamada da func ao O ponteiro do registro da func ao que fez a chamada aponta para o elemento antecessor da pilha de execuc ao Como o tamanho dos registros podem variar, o valor de retorno ca imediamente acima do registro da func ao que fez a chamada
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
A criac ao de registros de ativa c ao a cada chamada de func ao permitem a implementac ao da recurs ao De fato, a recurs ao consiste em chamar uma func ao que tem o mesmo nome da func ao que fez a chamada
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA
A criac ao de registros de ativa c ao a cada chamada de func ao permitem a implementac ao da recurs ao De fato, a recurs ao consiste em chamar uma func ao que tem o mesmo nome da func ao que fez a chamada A func ao n ao chama a si mesma, mas a uma nova inst ancia que tem a mesma estrutura da func ao original
Exemplos de recurs ao
Chamadas Recursivas
Chamadas de fun co es
Edson
EDA