解决此递归的最佳方法是什么?

What is the best way to solve for this recursion?

我自学遇到了下面的问题,我对C#了解不多(我来自JavaScript)。请参阅下面的猜测,欢迎任何额外的 explanation/clarification/correction。

以下代码的作用是什么以及您将如何改进代码(给定 n=1 和 m=10)?

class Program
{  public static int DoSomething(int n, int m)
   {
      int x = n;

      if (n < m)
      {
        n++;
        return x += DoSomething(n, m);
      }
      return x;
   }

   static void Main(string[] args)
   {
     Console.WriteLine("Enter n: ");
     int n = Convert.ToInt32(Console.ReadLine());

     Console.WriteLine("Enter m: ");
     int m = Convert.ToInt32(Console.ReadLine());

     int x = DoSomething(n, m) ;

     Console.WriteLine(x);

     Console.ReadKey();
   }
}

所以这显然是一个递归问题吧?看起来它会递增 n 直到它大于 m,然后将该数字写入控制台。所以最终它会将 11 记录到控制台(我假设总共,它会将 1-11 记录到控制台)。递归是多余的和不必要的,所以对我来说简单的解决方案就是将它转换为一个简单的 while 循环,只要 n < m,Console.WriteLine(n) 和 n++。我是否遗漏了什么,或者这是这种情况下最好的简单解决方案?

根据下面的公式(source),你可以重写你的代码作为计算:

注:α代表n,β代表m.

可以用代码表示为:

public static int DoSomething(int n, int m)
{
    int numerator = (m - n + 1) * (n + m);
    int result = numerator / 2;
    return result;
}