Решение простоейшей задаче на с++

107
26 ноября 2021, 20:20

Задача. Очень часто для работы со строками нам нужно сначала вычислить длину строки. Для C-style строк длина нигде явно не хранится, но её можно вычислить. Напишите функцию, которая вычисляет длину C-style строки. Учтите, что завершающий нулевой символ считать не нужно.

Требования к реализации: при выполнении этого задания вы можете создавать любые вспомогательные функции. Вводить или выводить что-либо не нужно. Реализовывать функцию main не нужно.

Решение.

unsigned strlen(const char *str)
{
    if(*str)
      return 1 + strlen(++str);
    else 
      return 0;
}

Вопросу у меня такой - Для чего нужна единица? Понимаю что идет рекурсия, но зачем нам складывать с единицей? Также если будет у кого-то другой способ решения, буду рад узнать.

Начинающий в плюсах, так что прошу сторого не ссудить

Answer 1

Суть подобного (рекурсивного) решения в том, что мы не знаем длину всей строки, однако мы можем взять подстроку длиной на 1 меньше и вернуть 1 + функция, т.е. мы повторяем эту операцию, пока нашу подстроку будет куда уменьшать (длина подстроки - 1 != 0), параллельно добавляя в рекурсивную лестницу 1 (я стараюсь объяснить как можно понятнее, возможны неточности). Потом, когда выполняется крайний случай, функция собирает все эти единицы по стэку и получается 1 + 1 + 1 + 1.... Вот и все. Таким же образом с помощью рекурсии можно найти количество членов последовательности.

READ ALSO
Проблемы с функцией swap

Проблемы с функцией swap

Я написал код для симметрии матрицы относительно побочной диагонали, на он ругается на

87
Как работает строчка кода?

Как работает строчка кода?

Вообще не понимаю как работает "word[i] != word[len-i-1]"Пожалуйста, опишите как можно подробнее и "для чайников")

106
Не работает заполнение массива ГСЧ

Не работает заполнение массива ГСЧ

Есть очень интересная задачаНужно заполнить двумерный массив MxN случайными числами в диапазоне [-5; 10] с помощью ГСЧ, а потом посчитать среднее...

221
Как создать QGridLayout в ячейках QTableView?

Как создать QGridLayout в ячейках QTableView?

Как программно создать в ячейках таблицы QTableView сетку QGridLayout, в которой размещены лейблы QLable?

92