Não não não!
Está vendo como faz falta usar as chaves? Dificulta o entendimento do código.
Vc pode ter um for e um if sem chaves, sendo assim, apenas a primeira instrução é considerada do bloco.
O return true do seu código não faz parte do for! Ele está fora do for.
Seu código é equivamente a
static boolean iguais(int[] ai){
if(ai==null | ai.length<=1 ) {
return true;
}
for(int i=0; i<ai.length-1; i++) {
if(ai[i]!=ai[i+1]) {
return false;
}
}
return true; // está vendo? o return true não está dentro do for, apenas o if.
}
Sugiro que use o operador de curto circuito or ( || ) ao invés de apenas |, pois seu código usando o | pode diparar uma NullPointerException. O “|” força a avaliação dos dois lados da expressão, mesmo que a primeira retorne true. Usando ||, assim que a primeira parte for avaliada como true, o bloco do if é executado. No seu código, tente passar um null como parâmetro para o método para vc ver o que vai acontecer.
Seu código não é recursivo (recursão é quando um método chama a ele mesmo ou a outro método que chama o primeiro, etc).
Agora só apenas como curiosidade, vc consegue algo parecido usando recursão que vc mencionou. Nesse algoritmo é algo totalmente “inútil” pois a solução pode ser alcançada de forma fácil através de um algoritmo iterativo (que é o quê vc fez).
[code]public static void main( String[] args ) {
System.out.println( igual( new Integer[]{ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }) );
}
public static boolean igual( Integer[] array ) {
if ( array.length == 1 ) {
return true;
} else if ( array[0] != array[1] ) {
return false;
} else {
List<Integer> lista = Arrays.asList( array );
/* poderia ter feito lista.remove(0) ao invés de criar uma sublista,
* mas a implementação de lista retornada pelo método asList de
* Arrays não suporta o método remove() (que é opcional pelo
* contrato da interface List)
*/
return igual( lista.subList( 1, lista.size() ).toArray( new Integer[0] ) );
}
}[/code]
Use sempre chaves para delimitar seus blocos, a leitura fica mais fácil.
Mesmo quando vc fica experiente e consegue bater o olho no código e ver o quê faz parte do quê, é legal usar as chaves para alguém com menos experiencia entender tbm.
[]´s