繁体   English   中英

C#中的递归返回类型

[英]Return Type for recursion in c#

我们应该在c#中使用哪种返回类型?可以在c#中使用“无效”返回类型进行递归吗?

我有一个其中返回类型为void的函数,但是当我调用它时,它递归地进行了无限循环,因此对此有更好的解决方案:

我正在使用如下所述的功能:

void A()
{
  //Some code
  A()
}

我认为您对递归的理解需要加强。

仔细看看递归

尽管递归很有用,您仍可以轻松创建一个递归函数,该函数从不返回结果且无法到达端点。 这样的递归导致计算机执行无限循环。

递归可能发生的另一个问题是递归函数可以使用所有可用资源(例如系统内存和堆栈空间)。 递归函数每次调用自身(或调用另一个调用原始函数的函数)时,都会使用一些资源。 当递归函数退出时,这些资源将被释放,但是递归级别过多的函数可能会使用所有可用资源。 发生这种情况时,将引发异常。

您的问题不是返回类型。 您需要有一些规则来终止递归,可以说是一个深度的拒绝调用,或者是有多个目录作为递归的最大值。

也许还可以看看使用C#的递归方法

每个递归方法序列都必须以某种方式终止。 通常,递归方法的第一部分将有一个分支,用于测试是否满足条件。 以这种方式,递归方法继续进行直到获得结果。 例如

static int Recursive(int value)
    {       
    if (value >= 10)
    {
        // throw new Exception("End");
        return value;
    }
    return Recursive(value + 1);
    }

与返回类型无关。 如果没有提供条件,您的函数将进入无限循环

当您调用相同的函数时,很明显它将进入无限循环。 满足条件后,您需要退出此循环,这可以通过使用break关键字来实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM