【问题标题】:C# Recursive Increment Decrement not working as parametersC# Recursive Increment Decrement 不能作为参数工作
【发布时间】:2014-07-29 12:33:51
【问题描述】:

我正在使用递归将两个数字相加,通过一次将第一个输入加 1 直到达到第二个的值。 为什么这行得通...

        private static int AddMethod(int input1, int input2)
    {
        if (input2 == 0)
        {
            Console.WriteLine(input1);
            return (input1);
        }
        else
        {
            input1++;
            input2--;
            return AddMethod(input1, input2);
        }

    }

但不是这个..

    private static int AddMethod(int input1, int input2)
    {
        if (input2 == 0)
        {
            Console.WriteLine(input1);
            return (input1);
        }
        else
        {
            return AddMethod(input1++, input2--);
        }

    }

我正在使用 Visual Studio 2010 和 .Net 4.0

【问题讨论】:

标签: c# recursion increment


【解决方案1】:

因为return AddMethod(input1++, input2--); 首先传递您的输入,然后递增和递减。

试试 return AddMethod(++input1, --input2);

【讨论】:

    【解决方案2】:

    后修复增量的工作原理是首先“分配”值,然后增加值。

    比较:

    int a = 1;
    int b = 1;
    
    int x = a++;
    int y = ++b;
    

    因此,在您的情况下,您传递给AddMethod 的值是未更改的值,它会在input1input2 被传递后修改它们的值。

    【讨论】:

      【解决方案3】:

      因为++-- 运算符是在将值作为参数传递给函数后执行的。

      您的代码:

      return AddMethod(input1++, input2--);
      

      等于:

      int result AddMethod(input1, input2);
      input1++;
      input2--;
      return result;
      

      你可以使用:

      return AddMethod(++input1, --input2);
      

      【讨论】:

        猜你喜欢
        • 2021-01-14
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 2020-01-07
        • 1970-01-01
        • 2019-09-19
        • 2022-01-26
        • 2011-04-26
        相关资源
        最近更新 更多