给出的是数组arr [],其中原始元素的每两个连续元素进行XOR 给定数组(即,如果原始数组中的元素总数为“ n”,则XOR的大小 数组将为“ n-1”)。给出了原始数组的第一个元素。编写C语言代码来 在不使用任何循环的情况下找到原始数组的第n个元素。
我尝试过
void getElements(int a, int arr[], int n)
{
int elements[n + 1];
elements[0] = a;
for (int i = 0; i < n; i++) {
elements[i + 1] = arr[i] ^ elements[i];
}
for (int i = 0; i < n + 1; i++)
cout << elements[i] << " ";
}
int main()
{
int arr[] = { 13, 2, 6, 1 };
int n = sizeof(arr) / sizeof(arr[0]);
int a = 5;
getElements(a, arr, n);
return 0;
}
我想要
这样的结果XOR array:arr[] = {12, 5, 26, 7}
First element: a = 6
Result = 18
有人可以用C代码帮助我吗?
答案 0 :(得分:0)
你在这里
int getElementFromXorArray(int* xorArr, int k, int firstElement){
if(k == 0){
return firstElement;
}
else{
return getElementFromXorArray(xorArr, k-1, firstElement) ^ xorArr[k-1];
}
}
运行示例
#include <stdio.h>
int getElementFromXorArray(int* xorArr, int k, int firstElement);
int main()
{
int arr[] = {1, 8, 23, 9, 90};
int xorArr[4];
for (int i = 0; i < 4; i++){
xorArr[i] = arr[i] ^ arr[i+1];
}
printf("%d", getElementFromXorArray(xorArr, 2, 1));
return 0;
}
可打印23