我正在使用递归将两个数字加在一起,通过一次向第一个输入添加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
答案 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
的值是未更改的值,它会在传递后修改input1
和input2
的值。
答案 2 :(得分:0)
因为在将值作为参数传递给函数后执行++
和--
运算符。
您的代码:
return AddMethod(input1++, input2--);
等于:
int result AddMethod(input1, input2);
input1++;
input2--;
return result;
而不是所有这些,你可以使用:
return AddMethod(++input1, --input2);