C# 在C中从函数本身调用函数

C# 在C中从函数本身调用函数,c#,recursion,C#,Recursion,这在JavaScript中是一种非常常见的技术,但我想确保我能在C中做到这一点 我在函数DoSomething中,在执行调用期间,我需要使用不同的值调用同一个函数。见下文: public bool DoSomething(int id) { if(id < 100) { // Some logic here var someValue = id + 50; var outcome = DoSomething(someVa

这在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语言中是否是一种不好的做法。

不,这还不错。这在几乎所有编程语言中都很常见。但是,您必须小心不要出现无限循环。

不,这还不错。这在几乎所有编程语言中都很常见。但是,您必须小心不要得到无限循环。

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

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

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

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

这种技术被称为

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

大多数计算机编程语言通过允许 函数在程序文本中调用自身

这是一种不错的做法,但它是否适合您取决于您的用例。

此技术称为

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

大多数计算机编程语言通过允许 函数在程序文本中调用自身


这不是一种不好的做法,但它是否正确取决于您的用例。

递归是一种不好的做法吗?但我认为使用var是一种不好的做法,除非您不知道它的类型是什么;这是一个简单的递归,完全正确。@通常,递归是一种使代码简洁易懂的有用技术。但是,在非尾部调用优化的语言中,它的性能较差,并且会滋生堆栈溢出异常。在递归函数和迭代函数之间进行选择时,请仔细检查您的用例。递归是一种糟糕的做法吗?但我想说的是使用var,除非您不知道它的类型是什么;这是一个简单的递归,完全正确。@通常,递归是一种使代码简洁易懂的有用技术。但是,在非尾部调用优化的语言中,它的性能较差,并且会滋生堆栈溢出异常。在递归函数和迭代函数之间进行选择时,请仔细检查您的用例。