gpt4 book ai didi

c - 在c中使用递归的strlen函数

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

我是递归主题的新手,我一直在尝试使用递归编写“strlen”函数,这就是我的尝试:

int strlen ( char str[], int i)
{
if ( str[i] == 0) return i+1;
return strlen(str,i++);
}

我尝试了一些非常相似的东西

int strlen( char str[], int i)
{
if ( str[i] == 0) return 1;
return strlen(str,i++) + 1;
}

在我的主要功能中

int main()
{
char word[MAX_DIGITS];
scanf("%s",word);
printf("%d", strlen(word,0));
return 0;
}

但是我的程序每次运行都会崩溃,我错过了什么? (顺便说一句,我正在使用 C90)

最佳答案

您的问题从这里开始:

i++

这称为后缀。只需使用 ++ii + 1

Postfix 发送值,然后递增变量。就像这样写:

return strlen(str,i);
i = i + 1;

您必须使用 Prefix,它会递增变量然后发送值。前缀 (++i) 的作用如下:

i = i + 1;
return strlen(str,i);

或者只发送值而不改变变量:

return strlen(str, i + 1);

在我看来,这是最简单的方法。

关于c - 在c中使用递归的strlen函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37745442/

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