Java初学者问题:可以在自己内部调用一个方法吗?

时间:2011-06-12 14:55:54

标签: java recursion

我今天参加了一个考试,有一个问题,我真的不记得确切的代码。

但是我记得在method exampleMethod(int num)里面有一条线在方法中调用方法本身。

我想知道一个方法可以自己调用吗?因为这是一个多项选择题,他们希望我们找到输出。

我希望我的问题很明确。

谢谢SOF:)

2 个答案:

答案 0 :(得分:15)

当然可以。当你这样做时,它被称为递归。注意你有一个退出条件,否则你会发现堆栈溢出。

例如

int iAmRecursive(int num) {
   if (num > 10) // break out at some condition; i.e. don't recurse
       return num; // return so the recursion doesn't continue

   iAmRecursive(num + 1); // I didn't break out, so continue to recurse.
}

编辑 - 这是相同的例子,但有不同的突破,以赞美@Ted的评论

int iAmRecursive(int num) {
   if (num <= 10) // only continue under certain condition
       iAmRecursive(num + 1); 

   // When I get here, I implicitly break out by not recursing.
}

但是我希望始终尽可能明确,所以如果可能的话,我会在第一个例子中明确地突破。

答案 1 :(得分:1)

一个很好的递归示例是计算阶乘的方法。

public static long factorial(int i)
{
    if (i == 1) return 1;
    return factorial(i - 1) * i;
}

然后像这样调用它:

long f = factorial(10); // equals 10! = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 (* 1)