使用递归比较字符串以确定哪个字母顺序排在第一位Java

我正在尝试编写一个方法,使用递归来比较字符串str1和str2,并确定它们中的哪一个按字母顺序排列(即,根据字典中单词的使用顺序)。

如果str1按字母顺序排在第一位,则该方法应返回int 1

如果str2按字母顺序排在第一位,则该方法应该返回int 2

如果两个字符串相同,则该方法应返回int 0

我知道Java API中有一个compareTo方法,但我想知道如何在没有这个的情况下执行此操作

这是我到目前为止,但我不完全确定如何继续

  } if (str1.length().equals(str2.length())) return 0; } else { (str.substring(1, str.length())); 

任何想法将不胜感激

创建方法int recursiveCompare(String string1, String string2, int index) 。 最初用index = 0调用它。比较string1.charAt(index)string2.charAt(index) ,如果它们不同,则返回1或2.如果它们相同,则返回recursiveCompare(string1, string2, index + 1)

当然,在调用charAt(index)之前,你必须检查string1和string2的长度。 如果它们同时到达终点,则它们相等,所以返回0.否则,返回已结束的数字。

是的,递归几乎是最糟糕的做法,大声笑。

不需要递归 …(除非在作业(?)分配中特别要求…)

由于这看起来很像家庭作业,我只是给出一些提示

使用整数变量(例如i)来索引从0到较短字符串的长度。 只要str1 [i] == str2 [i],并且尚未达到最后一个索引值,则递增i。 如果你确实达到了索引的最后一个可能的值,那么首先是较短的字符串(或者如果相同的长度它们被认为是相等的……)

否则,比较不同的第一个字符,并相应地确定哪个字符串是第一个…可以简单如下:
return(str1 [i]

如果递归你必须… (并且在其他评论中很容易说,这种问题确实不是递归的逻辑/有效候选者……)

我们的想法是拥有这种界面的function:

 int RecursCompare(string str1, string str2, int i) 

并调用自身,为str1和str2传递相同的值并传递i(i + 1)的下一个值,只要str1 [i] == str2 [i]并且str1或str2都不在其末尾。 当此condidtion变为false时,递归结束,而函数返回适当的值以表示Str1在Str2之前或之后按字母顺序排列。

的#include
主要()
{
char str1 [100],str2 [100];
int i = 0,k = 0;
puts(“输入字符串1”);
得到(STR1);
puts(“输入字符串2”);
得到(STR2);
I =排版(STR1,str2,0);
printf(“\ ncount is%d%d \ n”,i,strlen(str1));
(strlen(str1)== strlen(str2))?((strlen(str1)== i)?printf(“Both are equal”):printf(“Both are not equal”)):printf(“Both are not not not等于”);

}
int comp(char s1 [],char s2 [],int i)
{
printf(“\ n%c%c”,s1 [i],s2 [i]);
int sum = 0,count = 1;
if((s1 [i]!=’\ 0’)||(s2 [i]!=’\ 0’))
{
if(s1 [i] == s2 [i])
{
return(count + = comp(s1,s2,++ i));
}
其他
{
返回0;
}
}
其他
{
返回0;
}
返回计数;

}