Попытка рекурсивной печати элементов массива - PullRequest
0 голосов
/ 02 апреля 2020
#include <stdio.h>


int printArray(a[], unsigned int n){
    if (n == 4){
        printf("%d", a[4]);
    }
    else {
        printf("%d", printArray(a,n+1)); // here is the error, I know. But why?
    }
}


int main(){

    int a[5] = {1,2,3,4,5};
    printArray(a,0);

}

Я начинающий с C. Я пытаюсь распечатать каждый из элементов массива, но он правильно печатает только последний, а не первый. Я знаю, что что-то не так с рекурсивным способом. Я впервые использую рекурсивный способ без возврата и с использованием printf. Может быть, это ввело меня в заблуждение?

Вывод:

$ ./a.out 
5
0
1
1
0

1 Ответ

1 голос
/ 02 апреля 2020

Вы должны напечатать элемент массива, а не возвращаемое значение функции, используйте этот код

int printArray(int *a, unsigned int n){
    if (n == 4){
        printf("%d", a[4]);
    }
    else {
        printf("%d", a[n]);
        printArray(a,n+1);
    }
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...