Pessoal,
Quando esse programa é executado começa a imprimir a sequencia de caracteres. Daí aparece o seguinte:
Exception in thread “main” java.lang.StackOverflowError
at sun.nio.cs.SingleByteEncoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByteEncoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at estruturaDeDados.Recursividade.C(Recursividade.java:52)
at estruturaDeDados.Recursividade.C(Recursividade.java:56)
at estruturaDeDados.Recursividade.C(Recursividade.java:56)
at estruturaDeDados.Recursividade.C(Recursividade.java:56)…
e depois volta a imprimir os caracteres.
Alguém pode ajudar?
O fonte segue abaixo:
public class Recursividade {
public static void main(String[] args) {
int a = 10;
int resp;
resp = A(a);
}
public static int A(int x){
System.out.println('A');
int aux;
int z = 5;
if( x > 4 ){
aux = A(x - 3);
if (x >= 10){
return (B(x * 2)) + aux;
}
else{
return (B((x * 2) + 1)) + aux;
}
}
else{
return (z + C(x));
}
}
public static int B(int w){
System.out.println('B');
int y = 9;
if(w < 5){
return (w + y);
}
else{
return (2 + B(w - 3));
}
}
public static int C(int k){
System.out.println('C');
int ret = 1;
if( k > 2){
return (1 + C(k + 1));
}
else{
return ret;
}
}
}