Myn*_*cks 4 c string recursion reverse
递归.我检查了其他在线解决方案,它们似乎与我的完全相同.代码应该反转字符串(在其位置),但它不会.例如,当输入为st2 ="abcdefg"时,输出为空字符串.我期待st2 ="gfedcba".我错过了什么?
#include <stdio.h>
#include <string.h>
void recurse_reverse(char s[], int sz)
{
int i=0,j = sz -1;
if(i<j)
{
swap(&s[i],&s[j]);
recurse_reverse(s+1, sz-2);
}
}
void swap( char* s1, char *s2)
{
char tmp;
tmp = *s1;
*s1 = *s2;
*s2 = tmp;
}
int main(void)
{
char st1[9] = "abcdefg", st2[9];
strcpy(st2,st1);
recurse_reverse(st2,9);
printf("s1 = %s\ns2 = %s",st1,st2);
printf("\n" );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你正在交换2个零字节st1.因此,st2以空字节开始,因此printf()不打印任何内容.你只需要修复你的论点传递.代替
recurse_reverse(st2,9);
Run Code Online (Sandbox Code Playgroud)
做
recurse_reverse(st2,strlen(st1));
Run Code Online (Sandbox Code Playgroud)
您可能希望添加逻辑以确保目标阵列st2有足够的空间.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |