我的练习说我需要编写一个递归函数来反转给定的字符串,使用这个原型:
void reverse(char s[]);
我允许使用的唯一预先编写的函数是来自strlen()
库的string.h
。
我不知道从哪里开始。
答案 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数组。