Znajdowanie największej dodatniej int w tablicy za pomocą rekurencji
Zdecydowałem się na rekurencyjne zaimplementowanie bardzo prostego programu, aby zobaczyć, jak dobrze Java obsługuje rekurencję * i wyszedłem trochę za krótko. Właśnie to napisałem:
public class largestInIntArray {
public static void main(String[] args)
{
// These three lines just set up an array of ints:
int[] ints = new int[100];
java.util.Random r = new java.util.Random();
for(int i = 0; i < 100; i++) ints[i] = r.nextInt();
System.out.print("Normal:"+normal(ints,-1)+" Recursive:"+recursive(ints,-1));
}
private static int normal(int[] input, int largest) {
for(int i : input)
if(i > largest) largest = i;
return largest;
}
private static int recursive(int[] ints, int largest) {
if(ints.length == 1)
return ints[0] > largest ? ints[0] : largest;
int[] newints = new int[ints.length - 1];
System.arraycopy(ints, 1, newints, 0, ints.length - 1);
return recursive(newints, ints[0] > largest ? ints[0] : largest);
}
}
I to działa dobrze, ale ponieważ jest trochę brzydka, zastanawiałem się, czy jest lepszy sposób. Jeśli ktokolwiek ma jakieś myśli / alternatywy / cukier syntaktyczny do udostępnienia, byłoby to bardzo mile widziane!
P.s. Jeśli powiesz „użyj Lisp”, nic nie wygrasz (ale szacunek). Chcę wiedzieć, czy można to zrobić ładnieJawa.
* i jak dobrzeI obsługiwać rekursję