【发布时间】:2016-07-21 20:02:12
【问题描述】:
很抱歉这个基本问题,但我已经花了几个小时。 问题: 将数组右移指定步骤 代码如下:
static int[] ShiftRight(int[] arr, int shiftTimes)
{
if (shiftTimes == 0 || arr.Length == 0 || arr.Length == 1) return arr;
var resultArray = new int[arr.Length];
for (var i = 1; i < arr.Length; i++)
resultArray[i] = arr[i - 1];
resultArray[0] = arr[resultArray.Length - 1];
while (shiftTimes > 1)
{
shiftTimes--;
ShiftRight(resultArray, shiftTimes);
}
return resultArray;
}
问题:
虽然while 表达式是用来控制递归的,但由于一些未知的原因,在到达return resultArray; 行之后,程序又回到while 表达式,从而给出了错误的结果!此行为在调试时可见。
方法签名不得更改。
非常感谢任何帮助。
【问题讨论】:
-
循环或递归 - 选择一个
-
用 if 替换 while。也许它可能会起作用。
-
@MyIsaak:只是替换,但仍然得到错误的结果 - 一定还有其他地方我犯了错误!
-
@pm100: 绝对正确 - 谢谢你,但仍然得到错误的结果
标签: c# algorithm recursive-datastructures