Contando números inteiros de zero
Considere um arquivo Java com duas classes: uma aula privada da seguinte forma:
classe AclassO método a se chamar é, MTHD (). Tem o parâmetro "int não". O método está na classe, Aclass. Este método conta de 0 a 4. A primeira linha no método tem duas declarações. O primeiro imprime o parâmetro, não. O segundo imprime um espaço à direita deste parâmetro impresso. A próxima linha adiciona 1 a não. A linha a seguir é uma declaração IF composta. Tem a condição que deve ser atendida. A condição a ser atendida é quando nenhum alcance 5. Se 5 não foi alcançado, "MTHD (não);" se chama sem que não tenha acrescentado.
A classe principal para este método pode ser,
classe pública theClassA primeira declaração no método Main () declara o número inteiro, numerando zero a ele. Para que um método seja chamado, um objeto deve ser instanciado de sua classe. A próxima declaração no método Main () instancia um objeto, obj da Aclass. A declaração após usa esse objeto para chamar o método, mthd (), passando para ele o argumento, num, que é 0. Este é o começo da contagem. A última declaração no método Main () imprime uma nova linha, depois de todo o resultado ter sido impresso. A saída é:
0 1 2 3 4O método recursivo, MTHD (), é chamado a primeira vez do método principal (). Depois disso, continua se chamando, até que uma condição seja atendida.
Este tipo de contagem pode ser feito para qualquer intervalo. Para alcançá -lo para qualquer intervalo, o número de início do intervalo deve ser atribuído a num. Em vez de 5 para a condição if no método, o número logo após o intervalo deve ser digitado.
Adicionando uma variedade de números não contínuos
Considere os números:
10, 20, 30, 40, 50, 60
A soma dos 4 primeiros números é 100. Isto é: 10 + 20 = 30; 30 + 30 = 60; e 60 + 40 = 100. Um método recursivo pode estar adicionando esses números a uma soma crescente até que a soma seja menor ou igual a 100. Para adicionar os cinco primeiros números, o método recursivo pode estar adicionando os números a uma soma crescente até que a soma seja menor ou igual a 150.
A estratégia é ter todos esses números em uma matriz no método principal (). Em seguida, passe a matriz como um argumento para o método recursivo. Se a adição dos quatro primeiros números for necessária, quando a soma atingir 100, o método recursivo deve parar de se chamar. Se a adição dos cinco primeiros números for necessária, quando a soma atingir 150, o método recursivo deve parar de se chamar. Se a adição dos seis primeiros números for necessária, quando a soma atingir 210, o método recursivo deve parar de se chamar.
A classe para este método recursivo pode ser:
classe AclassIsto é para adicionar os quatro primeiros números. A classe tem dois campos, que são soma e eu. Eu sou para iterar através da matriz, começando do índice 0. A primeira declaração no método recursivo, mthd (), adiciona o próximo número, à soma, que é inicialmente zero. A próxima declaração aumenta i em 1, para o próximo índice de matriz da próxima chamada. A declaração depois é o composto IF-Statement. A condição aqui é que a soma não deve estar acima de 100. Portanto, para cada chamada que a soma não é de até 100 (ou acima), o método é chamado novamente, passando a mesma matriz. Nesta situação, a condição está no final da implementação do método.
A classe principal () para isso pode ser:
classe pública theClassA primeira declaração no método Main () instancia a matriz, com seus elementos. A segunda declaração instancia o objeto para o Aclass. A declaração depois chama o método recursivo, passando a matriz como argumento. Esta é a primeira chamada do método recursivo. Depois disso, o método se chamará até que a soma necessária seja alcançada. A última declaração imprime a soma final. A saída para este caso é 100.
Fatorial
O fatorial de 0, escrito como 0!, é 1. Os fatores de 5, 4, 3, 2, 1 são os seguintes:
Fatorial de 5 = 5 x 4 x 3 x 2 x 1 x 0! = 120Um programa pode ser escrito para que, quando um número for enviado para um método recursivo, o método recursivo finalmente retorne o fatorial resultante resultante. Observe que o fatorial pode ser calculado até 1, em vez de 0, e o resultado ainda será o mesmo.
A classe para o método recursivo pode ser:
classe AclassTodo o corpo do método é um composto se estatem. Se o número cujo fatorial for necessário é 1, o que será devolvido será 1, pois o fatorial de 1 é 1. Se o número for maior que 1, toda a multiplicação deverá ser feita, começando do próprio número, caindo por 1 unidade.
O resultado é obtido quando toda a multiplicação foi feita. A expressão de retorno aqui é uma chamada de método. Seu argumento é o produto do número e o método recursivo.
Suponha que o número cujo fatorial seja necessário seja 5, então o argumento da primeira chamada de retorno será:
5 x MTHD (4)Esta expressão será reservada na memória, e a próxima chamada será
5 x 4 x MTHD (3)Esta expressão será reservada na memória, e a próxima chamada será
5 x 4 x 3 x MTHD (2)Esta expressão será reservada na memória, e a próxima chamada será
5 x 4 x 3 x 2 x MTHD (1)Agora, o MTHD (1) retorna 1, devido à declaração IF-Part, “se (não == 1) retornar 1;”, resultando em,
5 x 4 x 3 x 2 x 1 = 120Para o valor final de retorno.
A classe principal para isso, pode ser:
classe pública theClassCom um argumento de 5 para a primeira chamada, no método Main (), o valor final retornado é 120.
Conclusão
Recursão em Java é o chamado de um método, pelo método, de dentro do método. Esta ação se repete até que uma condição seja atendida.