Как использовать значение локальной переменной, которое задается при последнем вызове? - PullRequest
1 голос
/ 03 июня 2019

У меня проблема в C, где я должен рекурсивно читать пользовательский ввод (целые числа) и распечатывать их обратно в обратном порядке с общим числом прочитанных целых чисел, добавленным к каждому числу.

Например, если бы я должен был ввести 1,1,2,1, вывод должен быть 4,5,4,4

У меня есть часть рекурсии + обратная печать, но значение i в моем кодеэто добавляется к каждому номеру из локальной области.Как мне сделать так, чтобы он использовал последнее значение i без использования static или глобальных целых чисел?

    void reverse_and_add(int i) {
      int n = read_int();
      if (n != ERR_READ) {
        i++;
        reverse_and_add(i);
        printf("%d\n", n + i);
      }
    }

Редактировать: я знаю, что это можно решить с помощью static int i, но эта проблемане должен использовать static целых

1 Ответ

0 голосов
/ 03 июня 2019

Имеет reverse_and_add() возвращать значение i после завершения обработки:

int reverse_and_add(int i) {
  int n = read_int();
  if (n != ERR_READ) {
    i = reverse_and_add(i+1);
    printf("%d\n", n + i);
  }
  return i;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...