c#递归自增自减不能作为参数使用

本文关键字:参数 不能 递归 | 更新日期: 2023-09-27 18:15:18

我正在使用递归将两个数字加在一起,通过将1加到第一个输入,每次一个,直到我已经达到第二个输入的值。为什么这个工作…

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

But not this.

    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#递归自增自减不能作为参数使用

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

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

Post - fix increment的工作原理是先"赋值",然后再增加值。

比较:

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

所以在你的情况下,你传递给AddMethod的值是不变的值,它修改了input1input2传递后的值

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

代码:

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

等于:

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

您可以使用:

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