C#递归递增递减不作为参数工作

时间:2014-07-29 12:33:51

标签: c# recursion increment

我正在使用递归将两个数字加在一起,通过一次向第一个输入添加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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

首先修复后增量工作"分配"值,然后递增值。

比较

int a = 1;
int b = 1;

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

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

答案 2 :(得分:0)

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

您的代码:

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

等于:

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

而不是所有这些,你可以使用:

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