W ksiazce, ktora czytam jest taki oto kod jak ponizej. Oblicza silnie ale bez uzycia for, zamiast tego jest ponowne wywolanie tej samej metody. Czy to duzo lepsza praktyka niz zwyczajnie uzycie for ()...? Przyznam szczerze, ze nie przyszloby mi do glowy, zeby w ten sposob do tego podejsc :)
package stacktrace;
import java.util.*;
public class StackTraceTest {
public static int factorial(int n){
System.out.println("factorial(" + n + "):");
Throwable t = new Throwable();
StackTraceElement [] frames = t.getStackTrace();
for (StackTraceElement f : frames){
System.out.println(f);
}
int r;
// tu kawalek obliczajcy silnie
if (n<=1) r = 1;
else r = n * factorial(n-1);
System.out.println("return " + r);
return r;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("Enter n: ");
int n = in.nextInt();
factorial(n);
}
}