使用递归函数向后打印给定的字符串,而不使用<string.h>

时间:2019-04-12 02:30:57

标签: c

我将总结作业中遇到的问题:

“编写一个递归函数,该函数接收用户给出的char数组,将其向后打印,并且不返回任何内容。该函数必须结束该过程并在找到\ 0时返回”。不要使用string.h库,也不要使用指针。“

我设法设法做到了递归,但是我在函数定义上失败了。

2 个答案:

答案 0 :(得分:0)

这是一种方法。使用递归函数,最大的问题是确保您具有正确的退出条件。如果您有任何问题,请告诉我。

#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;
}

答案 1 :(得分:0)

这无非是修改了Gardener的答案,而没有技术上使用指针(emem)(因为没有一点*东西)。

#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的书都不是一样好,可以说同样的话教员。