Я пытаюсь создать рекурсивную функцию в C, которая возвращает длину строки.
Если я делаю это с блоком If-Else, он работает как положено:
int myFunctionCountRecursive(const char* s, int i) {
if (s[i] != '\0') {
i++;
myFunctionCountRecursive(s, i);
}
else
return i;
}
Но когда я пытаюсь сделать это с троичным, я вижу, что переменная i
тоже увеличивается, но после возврата функция запускается второй раз и уменьшается i
?
int myFunctionCountRecursive(const char* s, int i) {
(s[i] != '\0') ? myFunctionCountRecursive(s, ++i) : 0;
return i;
}
In Чтобы получить ожидаемый результат, я должен написать:
int myFunctionCountRecursive(const char* s, int i) {
return (s[i] != '\0') ? myFunctionCountRecursive(s, ++i) : i;
}
Кто-нибудь может объяснить, почему такое поведение произошло? Спасибо