gpt4 book ai didi

c - 使用递归反转c中的字符串,而不使用任何其他数组或指针

转载 作者:行者123 更新时间:2023-11-30 21:40:42 26 4
gpt4 key购买 nike

#include<conio.h>
#include<stdio.h>
void main()
{
char strr[10]="hello";
char *st;
printf("%s",strr);
st=strv(strr);
printf("%s",st);
}
char* strv(char *str)
{
static int i,j;
char a;
if(str+1!=NULL)
{
a=*str;
i++;
strv(++str);
*(str-i+j)=a;
j++;
return str;
}
}

代码中存在错误“strv 的类型冲突”,我无法弄清楚原因。请提供通过递归反转数组且不使用任何其他数组或指针的解决方案进行响应

最佳答案

给定约束,至少可以使用 O(n^2) 算法。该函数定位末尾,记住最后一个字符,在下一级将其替换为零,并在内部调用完成后交换数组开头和原始最后一个字符。

void rev(char *a) {
int l=strlen(a);
if (l<2) return; // nothing to swap if l==0 or l==1
char b=a[l-1]; // have to remember the ending character
a[l-1]=0; // and have to set it to zero for next level
rev(a+1);
a[l-1]=a[0];
a[0]=b;
}

要解决编译错误,最简单的方法是将子程序放在main()之前。

关于c - 使用递归反转c中的字符串,而不使用任何其他数组或指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com