我写了以下代码来生成数字的总和,例如,如果输入10,它将生成它的总和,例如10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0输出:55可以正常工作。
public int GenerateSum(int num)
{
if (num <=0)
{
return 0;
}
int temp = num + GenerateSum(num - 1);
return temp;
}
现在,我已经更改了此代码以产生差异,例如,如果我输入数字说10,它将产生差异,例如10-9-8-7-6-5-4-3-2-1-0输出:-35
public int GenerateDifference(int num)
{
if (num <= 0)
{
return 0;
}
int temp = num - GenerateDifference(num - 1);
return temp;
}
现在,当我运行GenerateDifference(10)时,它会向我返回输出5。对于GenerateDifference(100),它会给我输出50,这也是错误的。如果它求和,那么它也应求差(如果我错了,请纠正我)。有任何帮助或指导吗?
上面的代码给出了5,因为当您使用递归生成时10-9-8-7-6-5-4-3-2-1-0
,递归最终要做的是
10 - ( 9 - ( 8 - ( 7 - ( 6 - ( 5 - ( 4 - ( 3 - ( 2 - ( 1 - 0) ) ) ) ) ) ) ) )
解决上述方程式,您将得到5
答案
由于您需要解决方案,因此10-9-8-7-6-5-4-3-2-1-0
可以将其简化为10 - ( 9+8+7+6+5+4+3+2+1+0 )
。然后,要使用递归获得答案,您将需要类似以下内容的东西
public int GenerateDifference(int num)
{
if (num <= 0)
{
return 0;
}
int temp = num - GenerateSum(num - 1);
return temp;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句