код для поиска n-го элемента исходного массива без использования цикла - PullRequest
0 голосов
/ 04 января 2019

Дан массив 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 голосов
/ 04 января 2019

Вот, пожалуйста,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...