写一个递归的字符串反转函数,但在使用异或时遇到了一些问题。整个函数的重点是不使用迭代器,这也是为什么它是一个递归函数。这不是作业,只是出于好奇。
private static char[] ReverseNL(char[] arr, int index)
{
var len = arr.Length;
if (index > 0)
arr[len - index] ^= arr[index - 1];
return index-- < 1 ? arr : ReverseNL(arr, index);
}
看起来它混乱了我的字符串的前半部分
"hey there stack!" 变成了 "I♫→A ←E↨reht yeh"
总是混乱短语的前半部分...
更新..
我想这里并不需要XOR..所以使用了基本赋值,并且去掉了返回。
private static void ReverseNL(char[] arr, int index) {
var len = arr.Length;
if (index > 0 && index > len / 2) {
var c = arr[len - index];
arr[len - index] = arr[index - 1];
arr[index - 1] = c;
index--;
ReverseNL(arr, index);
}
}