3

我的练习说我需要使用这个原型编写一个递归函数来反转给定的字符串: void reverse(char s[]);

我被允许使用的唯一预先编写的函数strlen()来自string.h库。

我不知道从哪里开始。

4

1 回答 1

4

首先让您的函数调用另一个执行实际递归的函数:

这可能是更熟悉的递归签名:

void reverse(char s[]) 
{
    reverse_helper(s,strlen(s));
}

void reverse_helper(char s[], int position) 
{
 // actual recursive code goes here
}

由于您不能使用辅助函数:

这是家庭作业,听起来您不只是想要答案,所以问自己以下问题。

你的基本情况是什么?

strlent(s) <= 1 //
在 strlen(s) == 2 处不需要反转,我们需要一个没有递归的简单反转。

我们知道反转 2 长度的 char 数组是微不足道的,但是如何反转 3 长度的 char 数组呢?

从 3 长度数组中取出最后一个字符并将其放在反向 2 长度数组的前面。

我的recusive call的通行证是reverse什么?

一个小一号的新 char 数组。

于 2012-12-20T16:00:13.067 回答