方法檢查每個字符的數量,如果每個字符都是偶數,則回傳 1。否則回傳 0。字串通過 str[] 傳遞。chars[] 的每個值在開始時都設定為 1。很難想象這會變成遞回,任何對教學的幫助都表示贊賞。
int recursionCheckEven(int i, int j, char str[], int chars[20]) {
for (i = 0; i < strlen(str); i =2) {
int count = 0;
for (j = i; j < strlen(str); j =2) {
if (str[i] == str[j] && chars[j] == 1) {
count ;
chars[i] = 2;
chars[j] = 2;
}
}
if (count % 2 != 0) {
chars[i] = 0;
}
}
for (int k = 0; k < 20; k ) {
if (chars[k] == 0) {
return 0;
break;
}
}
return 1;
}
我如何稱呼它:
for (unsigned int i = 0; i < stringcount; i ) {
int chars[20] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
if(recursionCheckEven(0, 0, strings[i], chars)) {
printf("The %dth string has even number of characters\n", i);
}
}
uj5u.com熱心網友回復:
您可以使用回圈以非遞回方式遍歷字符(建議這樣做)。遞回的思想是為了避免使用回圈(實際上不推薦這樣做并且會浪費堆疊記憶體并導致其他問題)。
對于遞回檢查,您可以使用指標檢查每個元素,然后轉到下一個元素并使用相同的函式。
為了幫助您入門,這是一個遞回函式,它接受一個字串并計算每個字符的數量。
int recursive(int total, char* ptr, char ch)
{
if (*ptr == '\0')
return total;
if (*ptr == ch)
total ;
return recursive(total, ptr 1, ch);
}
int main(void)
{
char *str = "111";
char ch = '1';
int total = recursive(0, str, ch);
printf("total of char %c in %s: %d\n", ch, str, total);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375110.html
