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]
-------------------------------------------------------------------------

Responder a