方法内调用方法,不知道你见过没
import java.util.*;--------------------编程问答-------------------- 递归没学过吗,楼主,应该好好补补大学计算机课程 --------------------编程问答-------------------- 这个是递归方法。 --------------------编程问答-------------------- t.getStackTrace();返回的是一个 StackTraceElement类型的数组对象,
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;
if(n <= 1) r =1;
else
{
System.out.println(n);
r =n * factorial(n - 1);//方法又调用方法,factorial(n - 1)这里的值应该是int型呀,可是输出结果却像个循环的,真得很乱
}
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();
System.out.println(factorial(n));
}
}
for(StackTraceElement f : frames) 这是foreach的写法,迭代数组对象的所有元素,
factorial(n)方法调用了factorial(n - 1),类推 factorial(n - 1)调用了 factorial(n - 2)...
一直到n<=1时,这个递归程序找到了出口,再一个一个返回, factorial(1), factorial(2)... factorial(n),最后出结果.
以前我对递归也很糊涂,你可以去看看数据结构. --------------------编程问答-------------------- 很常见的递归算法。 --------------------编程问答-------------------- 递归都不知道~
补充:Java , Java SE