gpt4 book ai didi

c - 我不明白为什么这个简单的递归函数在 C 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:09 26 4
gpt4 key购买 nike

我正在尝试为我用 C 编写的更大的作业编写一个简单的函数。该函数的目的是判断一个字符串是否只包含小写字母或大写字母,如果通过则返回字符串的大小(\0 的索引),否则返回-1。这是我写的:

 #include <stdio.h>

int only_letters(char string[], int index);

void main() {
char string1[]="Hi my name is pete";
char string2[]="thisissupposedtobevalid";

printf("the first string is %d and the second one is %d\n",only_letters(string1,0),only_letters(string2,0));

}

int only_letters(char string[], int index){
if(!string[index]) return index;
if(string[index]<'a'||string[index]>'Z') return -1;
only_letters(string, index+1);
}

当我运行它时,第一个字符串(应该是无效的)和第二个字符串(应该是有效的)都得到 -1。

(我们不允许使用循环,而且我们有许多其他限制,所以请不要提供更简单或更简单的解决方案,我知道它们存在,但我试图理解为什么我写的东西不起作用。 )

最佳答案

请打开您的编译器警告,在默认情况下您不会从该函数返回任何内容。

return only_letters(string, index+1);

另一个问题是你的范围倒置了。大写字母的 ASCII 值低于小写字母。

并且 main 必须返回 int。不是 void

关于c - 我不明白为什么这个简单的递归函数在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772653/

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