41 lines
908 B
Java
41 lines
908 B
Java
/**
|
|
@version 1.01 2004-05-10
|
|
@author Cay Horstmann
|
|
*/
|
|
|
|
import java.util.*;
|
|
|
|
/**
|
|
A program that displays a trace feature of a recursive
|
|
method call.
|
|
*/
|
|
public class StackTraceTest
|
|
{
|
|
/**
|
|
Computes the factorial of a number
|
|
@param n a nonnegative integer
|
|
@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;
|
|
}
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
Scanner in = new Scanner(System.in);
|
|
System.out.print("Enter n: ");
|
|
int n = in.nextInt();
|
|
factorial(n);
|
|
}
|
|
}
|