再帰関数を試すのはこれが初めてです。私が作成したこの関数は、昇順の文字のみが含まれている場合は文字列のサイズを返し、含まれていない場合は-1を返します。
2番目の「リターン」を取り出した後、なぜ両方のコードで機能するのかわかりません。一方はもう一方よりも無駄ですか?いくつかの洞察をいただければ幸いです。
「returnonly_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;
    }