import java.util.*;
public class test
{
public static int factorial(int n)
{
System.out.println("factorial("+n+")");
var walker =StackWalker.getInstance();//得到一个StackWalker实例
walker.forEach(System.out::println);//在每个栈帧上完成给定动作
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)
{
try(var in = new Scanner(System.in))
{
System.out.print("ENter N: ");
int n= in.nextInt();
factorial(n);
}
}
}
运行结果
ENter N: 3
factorial(3)
g2.test.factorial(test.java:10)
g2.test.main(test.java:24)
factorial(2)
g2.test.factorial(test.java:10)
g2.test.factorial(test.java:13)
g2.test.main(test.java:24)
factorial(1)
g2.test.factorial(test.java:10)
g2.test.factorial(test.java:13)
g2.test.factorial(test.java:13)
g2.test.main(test.java:24)
return 1
return 2
return 6