Para a = 1 e b = 2 a func(1, 2) irá retornar 2! A primeira vez em que a função é chamada, ela passa pelo if, b é diferente de um então ela deve retornar o valor de a + func(1, 1).
O valor de a é empilhado e é chamada a função novamente, com os valores a = 1 e b = 1. Como b desta vez é igual a um, ela retorna o valor de a = 1, que é finalmente somado com o a = 1 que tinha ficado esperando... Não é difícil de entender, pense que a função que você está chamando é outra função qualquer, pois numa chamada recursiva, é o que acontece: é alocado toda uma nova memória para cada chamada. Só tenha cuidado, pois se o valor que você estiver passando como b nunca chegar a 1, o programa trava, pois é infinito. Falou. /*************************************************************** Emilio Eiji Yamane 3º ano Ciência da Computação - Din - UEM icq 150217443 ^_^ Liberte-se!!! ^_^ ***************************************************************/ >public int func (int a, int b) >{ > if (b == 1) > return a; > else > return a + func (a, b - 1) >} > >Assumam valores de a = 1 e b = 2. Se possível, expliquem como vcs >conseguiram chegar a alguma solução. _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------