我想知道,总和来自哪里?我知道递归是什么,但我无法弄清楚如何int i获得总和.我已经读过关于堆栈......但我仍然不明白.请帮忙:)这里是代码:
static void Main(string[] args)
{
int i = RecursiveMethod(1,3);
//Console.ReadLine();
}
static int RecursiveMethod(int a, int b)
{
Console.WriteLine(a);
if (a == b)
{
return a;
}
else
{
return a + RecursiveMethod(a + 1, b);
}
}
Run Code Online (Sandbox Code Playgroud)
让我们一步一步地看到你打电话时发生的事情 RecursiveMethod(1,3);
a不等于bRecursiveMethod(2,3)RecursiveMethod(3,3)3RecursiveMethod(3,3)返回了.第2步是这样的:return 2 + RecursiveMethod(3,3)所以它变成:2 + 3然后它返回55所以return 1 + 5=6每次递归调用都会更深入一级.您必须在某个时刻点击返回,否则该方法将继续被调用,最终您将得到一个StackOverFlowException.这是因为每个方法都有一个堆栈,用于保存参数,局部变量和其他东西,当你继续调用函数时,所有这些值将被反复推送到堆栈中,对于每次调用,最终你将耗尽堆栈空间.
您点击的返回语句数应该等于您进行的递归调用的数量.不包括返回给调用者的最后一个返回.在上面的函数中,我们进行了两次递归调用,我们点击了2次返回,最后一次返回Main.