package StackTraceTest;
import java.util.Scanner;
/**
* Program ce afiseaza rezultatul urmaririi stekului pentru o metoda recursiva
* @author Dan
*
*/
public class StackTraceTest
{
/**
* Calcularea Factorial
* @param n Numar
* @return n! = 1 *2 * ... n
*/
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;
if(n<=1)
{
r=1;
}
else
{
r=n*factorial(n-1);
}
System.out.println("return "+r);
return r;
}
@SuppressWarnings("resource")
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter n:");
int n = in.nextInt();
factorial(n);
}
}