无需任何循环即可查找原始数组的第n个元素的代码

时间:2019-01-04 15:26:14

标签: c

给出的是数组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代码帮助我吗?

1 个答案:

答案 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