Это можно сделать разными способами.То, о чем я сейчас думаю, это массив not Allowed char
, который будет фильтровать, какой символ должен отображаться или нет.Примерно так:
#include <stdio.h>
#include <string.h>
// Global Scope variable declaration
int notAllowedChar[128] = {0}; // 0 for allowed , 1 for not allowed
char inputString[100];
void recursion(int pos, int len) {
if( pos >= len ) {
printf("\n"); // new line
return;
}
if( notAllowedChar[inputString[pos]]) {// not printing
recursion( pos + 1 , len );
}
else {
printf("%c", inputString[pos]);
recursion( pos + 1 , len );
}
}
int main() {
gets(inputString); // taking input String
printf("Enter not allowed chars:: "); // here we can even run a loop for all of them
char notAllowed;
scanf("%c", ¬Allowed);
notAllowedChar[notAllowed] = 1;
int len = strlen(inputString);
recursion( 0 , len );
}
Как это работает
Допустим, у нас есть простая строка «Hello world», и мы хотим, чтобы l был удален из финальной строки, поэтому итоговый результат будет«Heo word»
Здесь длина «Hello world» составляет 11 символов перед вызовом функции рекурсии, поэтому мы проверяем индекс 'l', который составляет 108 значений ascii link 1 в массиве notAllowedChar
.
теперь мы вызываем метод рекурсии со значением (0, 11), в методе рекурсии мы имеем в основном 2 логических операции if, первая для base case
, где мы завершаем наш рекурсивный вызов, когда pos равноили больше 11. и если это не так, мы выполним вторую логическую операцию, если current char
для печати или нет.Это просто проверка, где этот символ находится в списке notAllowedChar
или нет.Каждый раз, когда мы увеличиваем pos
value + 1
и выполняем рекурсивный вызов, и, наконец, когда pos равно или больше 11, это означает, что мы приняли все наше решение о печати char или нет, наша рекурсия прекратится.Я попытался назначить переменную со значимым именем.Если вы до сих пор не понимаете, как эта работа, вам следует использовать простую базовую симуляцию рекурсии (поиск в YouTube), а также попробовать вручную отладить изменение значения в recursion local scope
.Это может занять время, но это будет достойно понимания.Все самое лучшее.