Вывести заданную строку назад с помощью рекурсивной функции, без использования <string.h> - PullRequest
0 голосов
/ 12 апреля 2019

Я кратко изложу проблему, которая уходит с моей домашней работой:

"Напишите рекурсивную функцию, которая получает массив символов, заданный пользователем, печатает его назад и ничего не возвращает. Функция должна завершитьсяпроцесс и возврат, когда \ 0 найден ".Не используйте библиотеку string.h и не используйте указатели. "

Мне как-то удалось получить рекурсивный способ сделать это, но у меня не получается определить функцию.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Это не что иное, как обновление ответа Садовника, без технически с использованием указателей (потому что нет маленьких * штук).

#include <stdio.h>

void recursive_print(char array[]) {
  if (array[0] != '\0') {
    recursive_print(array + 1); //pointer arithmetic, but no '*', so not a pointer supposedly
    printf("%c", array[0]);
  }
  else {
    printf("\n");  // send a new line at the end to make it look better.
  }
}

int main() {
  char string[] = "Hello";
  recursive_print(string);
  return 0;
}

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

0 голосов
/ 12 апреля 2019

Вот один из способов сделать это.С рекурсивными функциями самая большая проблема - убедиться, что у вас есть правильное условие выхода.Дайте мне знать, если у вас есть какие-либо вопросы.

#include <stdio.h>

void recursive_print(char* array) {
  if(*array != '\0') {
    recursive_print(&array[1]);
    printf("%c", *array);
  } else {
    printf("\n");  // send a new line at the end to make it look better.
  }
}

int main()
{
  char string[] = "Hello";
  recursive_print(string);
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...