为了学习递归,我从以下链接扩展了递归方法: 递归的工作方式 是我的代码: 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 ,22, 2 ,13, 1 ,2我了解堆栈的概念,但不了解第三次迭代中值a和b的切换。在递归调用method(3)之后,当flowerInVase = 1时,不应分别调用a = 2和b = 1的值,因为将调用递归函数method(flowerInVase-1,b,a)。需要了解递归函数在这种情况下的工作方式
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
的值a和b反转关于以前的呼唤-正是因为呼叫
Method(flowerInVase - 1, b, a);
您可以从输出中看到,当flowerInVase为2时,值为a2,而值为b1。这是此行的含义:
2, 2 ,1
因此,看看它,我们有:
Method(flowerInVase -1, b, a);
// flowerInVase is 2
// b is 1
// a is 2
因此,最终通话等效于:
Method(1, 1, 2);
...这就是您的最终输出显示的内容。
重要的一点是它使用的是当前执行方法中a和的值,而不是“最顶层”方法中的值。b
- 1 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消