quitZAUMMM 18 Denunciar post Postado Novembro 12, 2007 Tipo glr naum qro o negocio pronto, qro q vcs me deem uma luz pra entender isso.. pq como vo usar a função dentro dela msma!! help-me pf. Faça o diagrama de execução para a seguinte função recursiva com N = 6. Obs: Considere como símbolo de atribuição o sinal de igualdade '=' . Função: inteiro zzz(inteiro n) Variáveis: inteiro aux Início SE ( n <= 2 ) RETORNE ( 1 ) FIM-SE n = n – 1 aux =zzz ( n ) n =n – 1 RETORNE ( aux + zzz( n ) ) Fim Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 12, 2007 A cada chamada de uma nova função a função anterior é empilhada até que alguma das funções se resolva. Quando uma função se resolve ela volta desempilhando todas as outras. Tente montar isso que falei no papel e faça o teste de mesa. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 12, 2007 putz kandrade num entendi muito.. pq tipo como vo saber resolver isso: aux =zzz ( n ) :s + vlw, eu pelo menos peguei um poco da lógica soh num consegui desembaraça-la totalmente. Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 12, 2007 Realmente não vai saber isso: aux =zzz ( n ) mas n vai variar até chegar em 2 SE ( n <= 2 ) RETORNE ( 1 ) FIM-SE Quando n chegar a 2 essa função termina e as funções empilhadas começam a receber seus valores. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 12, 2007 cara tenho q ser bem sincero com você.. eu faço até aki dai trava n n aux zzz(n) 0 0 1 1 2 2 3 2 tipo eu até vi uma função de fibonacci assim + msm assim tem um nó =x Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 12, 2007 1. n = 6; aux = ?; zzz(5) 2. n = 5; aux = ?; zzz(4) 3. n = 4; aux = ?; zzz(3) 4. n = 3; aux = ?; zzz(2) desempilha 4 n = 2; aux = 1; n = 1 retorno = 1 + 1 = 2 desempilha 3 n = 3; aux = 2 n = 2 retorno = 1 + 2 = 3 desempilha 2 n = 4; aux = 3 n = 3 retorno = 1 + 2 + zzz(3) e assim vai. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 13, 2007 putz cara fiz até em C pra ver os resultados + hj eu tenho aula de algoritmo ai eu pego uns 10 min da professora pra ela me explicar detalhadamente esse negocio de recursividade. #include <iostream> #include <conio.h> #define limpa system("cls") using namespace std; int zzz(int num) { int aux, y; if (num <= 2) return (1); num=num-1; aux=zzz(num); num=num-1; y=(aux+zzz(num)); return (y); } main() { cout << "Digite um numero: "; int n; cin >> n; cin.get (); limpa; cout << "O resultado e: " << zzz(n) << endl; system("pause>>NULL"); return 0; } + kra vlw pela explicação agora tenho pelo menos noçaum de como funciona. gravei q pra resolver um alg. recursivo precisa-se do metodo de empilhar e desempilhar.. vlw Compartilhar este post Link para o post Compartilhar em outros sites
lmbagolin 0 Denunciar post Postado Novembro 13, 2007 Nessa página tem um post bem "educativo" para entender recursividade http://www.tecnoabil.com.br/index.php?post=59 Com imagem e tudo. Facil facil de entender. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 13, 2007 entaum Kandrade fiz oq eu consegui.. 1. n = 6; aux = ?; zzz(5) 2. n = 5; aux = ?; zzz(4) 3. n = 4; aux = ?; zzz(3) 4. n = 3; aux = 1; zzz(2) desempilha 4 // quando 'n' for 3 n = 2; aux = zzz(2) => 1; n = 1; zzz(n) = 1 retorno = 1 + 1 = 2 desempilha 3 //quando 'n' for 4 n = 3; aux = zzz(3) => 2 n = 2; zzz(n) = 1 retorno = 1 + 2 = 3 desempilha 2 //quando 'n' for 5 n = 4; aux = zzz(4) => 3 n = 3; retorno = 1 + 2 + 3 = 6 desempilha 1 //quando 'n' for 6 n = 5; aux = zzz(5) => 6 n = 4 retorno = 1 + 2 + 3 + 6 = 12 mas no prog. q fiz em C c tiver certo o resultado pra qnd 'n' for 6 é 8. me ajuda!! Compartilhar este post Link para o post Compartilhar em outros sites