编写递归字符串反转器什么是我较小的输入?

时间:2012-12-20 15:40:41

标签: c arrays recursion

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

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

我不知道从哪里开始。

1 个答案:

答案 0 :(得分: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长度字符数组是微不足道的,但是如何反转3长度字符数组呢?

  

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

传递给reverse的回复调用的内容是什么?

  

一个小一号的新char数组。