为了账号安全,请及时绑定邮箱和手机立即绑定

递归方法中的切换值

递归方法中的切换值

C#
小怪兽爱吃肉 2021-03-30 17:18:13
为了学习递归,我从以下链接扩展了递归方法: 递归的工作方式 是我的代码:   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


查看完整回答
反对 回复 2021-04-10
  • 1 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信