C#递归函数调用:请问这个功能不是无限调用自身?

问题描述 投票:0回答:1

我很困惑,下面的代码是如何从此刻却是第一个叫无限不只是循环。

`public void Move(int discs, Stack<int> from, Stack<int> to, Stack<int> auxiliary)
{
    if(discs > 0)
    {
        Move(discs - 1, from, auxiliary, to);

        to.Push(from.Pop());
        MovesCount++;
        MoveCompleted?.Invoke(this, EventArgs.Empty);
        Move(discs - 1, auxiliary, to, from);
    }
}`

如何将代码曾经闯过第一移动()?

c# recursion
1个回答
3
投票

它很简单,当discs <= 0将开始放松。

每次调用Move(discs - 1,...)递减盘,等等等等。基本上在第一刚通过了数作为一个级别深度可变

© www.soinside.com 2019 - 2024. All rights reserved.