Задача состоит в том, чтобы написать рекурсивную функцию, которая возвращает последнее число (ASCII) в массиве символов.Если в данном массиве нет числа, оно должно вернуть 0.
Редактировать
В этом случае функция должна возвращать только 4 из массива a, потому что онаэто последняя цифра в этом массиве, а в массиве b она должна возвращать '0', потому что в этом массиве вообще нет цифры.
char rek(char a[], int i){
int j = i;
char tmp = '0';
if((a[j] >= '0') && (a[j] <= '9')){
tmp = a[j];
}
while(a[j] != '\0'){
rek(a, i+1);
}
return tmp;
}
int main(){
char a[7] = {'a','b','1','c','4','n','\0'};
char b[7] = {'a','b','c','c','a','n','\0'};
printf("Letzte Ziffer: %c \n", rek(a, 0));
printf("Letzte Ziffer: %c", rek(b, 0));
getchar();
return 0;
}
Я понимаю, что каждый раз, когда моя функциярекурсивно называется tmp установлен в '0', что не то, что я хочу.
Почему-то я не могу понять, как функция может вызывать себя со следующим элементом в массиве, чтобы посмотреть, не теряязаданное значение tmp.
Я также не хочу делать tmp глобальной переменной.
Кроме того, что для меня было неожиданным, он выводит 'c' в результате в строках бота.Я думал, что мое if-утверждение должно предотвратить это.