【递归】子串反向——递归
请编写一个递归函数
reverse(char str[], int start, int end )
该函数的功能是将串 str 中下标从 start 开始到 end 结束的字符颠倒顺序。假设 start 和 end 都在合理的取值范围。
只需要编写递归函数 reverse,系统中已经设置好了main函数。
预设代码:
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */
#include <stdio.h>
#include <stdlib.h>
void reverse( );
int main( )
{ char str[100];
int start, end;
gets(str);
scanf("%d%d", &start, &end);
reverse( str, start, end );
printf("%s\n", str);
return 0;
}
/* PRESET CODE END - NEVER TOUCH CODE ABOVE */
思路
和【递归】回文字符串——递归很想,只要把判断是否一样改成交换位置即可
代码
void reverse(char * str, int start, int end)
{
if(end >= strlen(str))
end = strlen(str) - 1;
if(end - start > 0)
{
char tmp = str[start];
str[start] = str[end];
str[end] = tmp;
return reverse(str, start + 1, end - 1);
}
}