Como funciona essa função!

2 respostas
R

package scr;

public class Efetua

{ public static void main(String[] args)

{   int  a = 5,  b = 7, c = 4;
System.out.println(Efetua.soma(a,b));

System.out.println(Efetua.produto(a,b));

System.out.println(Efetua.calcula©);

}

public static int soma (int x, int y)
{ return x+y;}

public static int produto (int x, int y)
{ return x*y;}

public static int calcula (int x)

{ if (x < 2)

return 1;

else

return x* calcula (x-1) ;

}

}

eu sei o resultado é 12 35 24, só q qria saber sobre a parte q está em negrito… por q q da 24?

2 Respostas

B

é recursão isso dai
se tu passar um valor maior que 2 como parâmetro ele vai chamar o próprio método dinovo passando como parâmetro o x-1

no teu caso

o parâmetro da primeira chamada é o c que é igual a 4.

então ele faz 4*(retorno Calcula(3))

dentro desta segunda chamada ele irá retornar 3*(retorno Calcula(2)–> 3-1 = 2 )

na próxima chamada ele retorna 1 no if é menor que dois.

então ele faz simplesmente 4<em>3</em>2*1 = 24

faz o c valer 5 ali. ele vai fazer 54321 = 120

é confuso de entender de cara, procura algum tutorial sobre recursão ou método recursivo. é tri interessante isso dai

R

mto obrigado pela sua explição…

me esclareceu totalmente…

obrigado!

Criado 18 de junho de 2008
Ultima resposta 19 de jun. de 2008
Respostas 2
Participantes 2