问题描述
|
我今天考试了,有一个问题我真的记不清确切的代码了。
但是我确实记得在ѭ0里面有一行在方法内部调用方法本身。
我想知道自己内部可以调用一种方法吗?因为这是一个选择题,所以他们希望我们找到输出。
希望我的问题清楚。
谢谢SOF :)
解决方法
当然可以。当您这样做时,它称为递归。注意退出条件,否则将导致堆栈溢出。
例如
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.
}
但是我希望始终尽可能地明确,因此,如果可能的话,我将像第一个示例一样明确地突围。
, 递归的一个很好的例子是一种计算阶乘的方法。
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)