gpt4 book ai didi

c - 字符串递归

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:29 25 4
gpt4 key购买 nike

我需要编写一个递归函数,它获取一个字符串,然后从末尾到开始只打印字母(大写和小写)

for exemple:
str={"abc123#@!456DEF&^65gHj"}
Reducing(str);
output: jHgFEDcba .

但我一直停留在如何让函数继续到下一个字符的部分我所能做的就是打印最后一个字符,我就卡住了……请帮忙

here's my code:

void Reducing(char str[])
{
if (str[0] == '\0')
return ;

if ((str[strlen(str)-1] <= 122 && str[strlen(str)-1] >= 97) || (str[strlen(str)-1] <= 90 && str[strlen(str)-1] >= 65))
putchar(str[strlen(str)-1]);

Reducing(str+(strlen(str)));
}

最佳答案

我相信整个练习的重点是在每个递归步骤中将字符串向下移动一个字符,直到到达末尾,然后在返回的路上打印当前字符(在递归调用之后)。你不应该使用 strlen

字符串是内存中以零(或 NUL)字符结尾的字符序列。提供字符串中第一个字符的地址允许您通过向地址添加偏移量来查找所有其他字符。字符串也可以被认为是一条有头(第一个字符)和尾部(其余字符)的蛇。头部是位于字符串地址的单个字符。尾部是地址加1处的字符串。

为了向后打印字符串,如果字符串为空(其头部为 NUL),则我们无需执行任何操作。否则,如果我们通过递归调用向后打印函数向后打印尾部,然后打印头部字符,那么我们就完成了我们的目标。

关于c - 字符串递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44204641/

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