У меня есть массив, таблица, с некоторыми символами, а и б. Я хочу найти и заменить 'b' на 'a', а затем посчитать, сколько их заменить. Как написать рекурсивную функцию, эквивалентную вложенному циклу?
const int length = 4;
char table[length][length] = {
{'a','b','a','a'},
{'a','a','a','b'},
{'a','a','b','a'},
{'b','b','a','a'}
};
int count = 0;
for (int i = 0; i < length; i++) {
for (int j = 0; j < length; j++) {
if (table[i][j] == 'b') {
count++;
table[i][j] = 'a';
}
}
}
cout << "Count: " << count << endl;
Это то, что я пытался:
int replace_char(char array[][length], int row, int col) {
// base cases and recursive
if (row+1 != length - 1)
replace_char(array, row+1, col);
if (col+1 != length - 1)
replace_char(array, row, col+1);
// do this
if (array[row][col] == 'b') {
array[row][col] = 'a';
return 1 + replace_char(array, row, col);
}
return 0;
}
Моя идея, если это не конец столбца илистрока, затем проверьте следующий столбец или строку. При проверке, если char равен b, верните 1 и начните проверку с того места, где он останавливается. Но это не работает.