【发布时间】:2019-07-24 09:13:53
【问题描述】:
我应该用 C 编程语言编写一个递归函数来检查字符串 1 是否大于或等于或小于字符串 2,从而分别返回 1、0、-1。
以下是我编写的代码。该程序无法终止,我无法弄清楚原因。请给我一些建议。谢谢。
int revisedStrcmp(char *s1, char *s2) {
int i = 0, n = 0, p = 0;
if (s1[i] == '\0' && s2[i] != '\0') //s1 shorter than s2
return -1;
else if (s1[i] != '\0' && s2[i] == '\0') //s1 longer than s2
return 1;
else if (s1[i] != '\0' && s2[i] != '\0') //both not equal to null
{
if (s1[i] > s2[i]) n += 1; //s1
else if (s1[i] < s2[i]) p += 1; //s2
else
{
n += 1; //s1
p += 1; //s2
}
i += 1;
return revisedStrcmp(s1, s2);
}
else //if s1[i] & s2[i] are null
{
if (n > p) //s1 > s2
return 1;
else if (n < p)
return -1;
else
return 0;
}
}
【问题讨论】:
标签: c string function recursion