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
因为return AddMethod(input1++, input2--);
首先传递您的输入,然后进行递增和递减。
试return AddMethod(++input1, --input2);
Post - fix increment的工作原理是先"赋值",然后再增加值。
比较:
int a = 1;
int b = 1;
int x = a++;
int y = ++b;
所以在你的情况下,你传递给AddMethod
的值是不变的值,它修改了input1
和input2
传递后的值
因为++
和--
操作符是在将值作为形参传递给函数后执行的。
return AddMethod(input1++, input2--);
等于:
int result AddMethod(input1, input2);
input1++;
input2--;
return result;
您可以使用:
return AddMethod(++input1, --input2);