【发布时间】:2018-09-19 08:17:03
【问题描述】:
为了学习递归,我从以下链接扩展了递归方法: how recursion works 以下是我的代码:
class Program
{
static void Main(string[] args)
{
Method(3,1,2);
Console.ReadLine();
}
public static void Method(int flowerInVase, int a, int b)
{
if (flowerInVase > 0)
{
Method(flowerInVase - 1,b,a);
Console.WriteLine(+flowerInVase+", "+a+" ,"+b);
}
}
以下是输出:
1, 1 ,2
2, 2 ,1
3, 1 ,2
我了解堆栈概念,但不了解在第三次迭代中值 a 和 b 的切换。在递归调用方法(3)之后,当flowerInVase = 1时,不应该分别设置a = 2和b = 1的值,因为递归函数方法(flowerInVase - 1,b,a)被调用。需要了解递归函数在这种情况下是如何工作的
【问题讨论】:
-
按照你的逻辑,很简单。
-
第一个 Method(3,1,2) 被调用,然后 Method(2,2,1),然后 Method(1,1,2),然后 Method (0,2,1) .在方法(0,2,1)中,if条件里面的代码不会被执行。之后 Method(1,1,2) 继续执行并将 1, 1, 2 写入控制台。其次是 2,2,1 和 3,1,2。
标签: c# function recursion c#-4.0