Я хочу вывести 1 3 4 5 7 9, но я вряд ли застрял здесь - PullRequest
0 голосов
/ 02 февраля 2020

Я пытался два часа и не могу найти ответ. Если кто-то может помочь, я буду очень благодарен.

#include <stdio.h>

void somefunction(const int[], int);

int main() {
  int a[] = { 1, 3, 4, 5, 7, 9, 11 };
  somefunction(a, 5);
  return 0;
}

void somefunction(const int b[], int c) {
  if (c > 0) {
    somefunction(b[], c - 1);
    printf("%d ", b[c]);
  }
}

1 Ответ

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

if (c > 0) это проблема. Вам нужно сделать так, чтобы if (c >= 0) печатало значение 1 внутри a[0].

. Также первый аргумент при рекурсивном вызове somefunction внутри somefunction должен пропускать [] .

В качестве дополнительной подсказки, чтобы вывести значение 11 в a[6], необходимо изменить

somefunction(a,5);

в main() на

somefunction(a,6);

Код возобновления:

#include <stdio.h>

void somefunction(const int[], int);

int main() {
  int a[] = { 1, 3, 4, 5, 7, 9, 11 };
  somefunction(a,6);
  return 0;
}

void somefunction(const int b[], int c) {
  if (c >= 0) {
    somefunction(b, c - 1);
    printf("%d ", b[c]);
  }
}

Вывод:

1 3 4 5 7 9 11
...