在C#中调用自身内部的函数

时间:2017-10-21 20:47:34

标签: c# recursion

这是JavaScript中非常常见的技术,但我想确保我可以在C#中执行此操作。

我在函数DoSomething()中并且在执行调用期间,我需要使用不同的值调用相同的函数。见下文:

public bool DoSomething(int id)
{
    if(id < 100)
    {
         // Some logic here
         var someValue = id + 50;
         var outcome = DoSomething(someValue);

         // Some more logic here
    }
    else
    {
        // Some other logic here
    }
}

我认为没有理由不能做上述事情,但想知道这是否是C#的不良做法。

3 个答案:

答案 0 :(得分:2)

这个概念被称为recursion,并不仅限于JavaScript。它实际上是一种非常广为人知的技术,实际上正在替换某些语言中的循环,例如scheme。

在C#中调用函数也是有效的。只要确保你有一个终止条件,因为你有一个限制堆栈。由于每个函数调用都会将另一个项目推送到调用堆栈,因此最终可能会出现所谓的堆栈溢出

答案 1 :(得分:2)

此技术称为Recursion

  

计算机科学中的递归是一种解决问题的方法   问题取决于同一问题的较小实例的解决方案   (与迭代相反)。

     

大多数计算机编程语言通过允许a来支持递归   函数在程序文本中调用自身。

这不是一种不好的做法,但对你来说是否正确取决于你的用例。

答案 2 :(得分:1)

不,不错。几乎每种编程语言都很常见。但是,你必须小心不要让无限循环。