這是我第一次玩遞歸函數,我寫的這個函數返回一個字符串的大小,如果它只包含字母升序,如果不是,則返回-1。C:中的遞歸函數總是有必要的嗎?
我不明白爲什麼它適用於這兩個代碼,我拿出第二個「返回」後。比另一個更浪費嗎?希望有些見解。
「return only_ascending_letters(string,index + 1);」
#include <stdio.h>
int only_ascending_letters(char string[], int index);
void main() {
char string1[]="Hi my name is pete";
char string2[]="aabcdefg";
printf("the first string is %d and the second one is %d\n",only_ascending_letters(string1,0),only_ascending_letters(string2,0));
}
int only_ascending_letters(char string[], int index){
if(!string[index]) return index;
if(((string[index]>='a'&&string[index]<='z')||(string[index]>='A'&&string[index]<='Z'))&&((string[index]<=string[index+1])||!string[index+1]))
return only_ascending_letters(string, index+1);
else return -1;
}
「only_ascending_letters(string,index + 1);」
#include <stdio.h>
int only_ascending_letters(char string[], int index);
void main() {
char string1[]="Hi my name is pete";
char string2[]="aabcdefg";
printf("the first string is %d and the second one is %d\n",only_ascending_letters(string1,0),only_ascending_letters(string2,0));
}
int only_ascending_letters(char string[], int index){
if(!string[index]) return index;
if(((string[index]>='a'&&string[index]<='z')||(string[index]>='A'&&string[index]<='Z'))&&((string[index]<=string[index+1])||!string[index+1]))
/*Took out the return*/ only_ascending_letters(string, index+1);
else return -1;
}
主要應該返回int。 – wildplasser
看看使用apache commons的StringUtils類來簡化測試,如果字符是字母的。 –