Recursão

3 respostas
_fs

Oi, bom dia.

Dúvida simples: porque o compilador não aceita isso?

protected boolean CheckSea( int b[][] )
	{
		b = new int [20][20];
		
		for( int i = 0; i < b.length; i++ )
			for( int j = 0; j < b.length; j++ )
				if( b[ i ][ j ] == 2 || b[ i ][ j ] == 3 || b[ i ][ j ] == 4 )
					return false;
				else
					return true;
	}

A ide acusa o seguinte: “Este método precisa returnar um resultado do tipo booleano.”

E nos exemplos do próprio livro há casos em que o return mora em laços e estruturas else/if.

Alguém pode me explicar o porquê?

3 Respostas

_fs

Puz cara, exatamente isso :smiley: Valeu!

louds

Porque todos os pontos de escape da sua função precisam retornar um valor.

A

Não sou nenhum expert, mas pelo que vi o erro está no escopo do retorno. Eu faria essa modificação:

Código:

protected boolean CheckSea( int b[][] )

{

boolean x=false;

b = new int [20][20];
for( int i = 0; i &lt; b.length; i++ )
     for( int j = 0; j &lt; b.length; j++ )
        if( b[ i ][ j ] == 2 || b[ i ][ j ] == 3 || b[ i ][ j ] == 4 )
           x = false;
        else
           x = true;
  return x;

}
Criado 13 de outubro de 2003
Ultima resposta 13 de out. de 2003
Respostas 3
Participantes 3