@Ventus

Как найти длину строки через итеративный процесс?

Здравствуйте. Решил написать функцию, которая будет вычислять длину строки:

const strLenght = (string) => {
  const iter = (n) => {
    if (string[n] === '') {
      return n;
    }
    return iter(n++);
  };

  return iter(0);
};


Но функция не может завершить рекурсию. Пробовал вместо строки string[n] === '' использовать string[n] === undefined, однако, это тоже не помогает.

Скажите, в чем моя ошибка?
  • Вопрос задан
  • 136 просмотров
Решения вопроса 3
Lynn
@Lynn
nginx, js, css
Это конечно странное действие.

По вопросу, n++ возвращает предыдущее значение, т.е. у вас бесконечно вызывается iter(0). Замените iter(n++) на iter(n+1).
Ответ написан
twobomb
@twobomb
const strLenght = (string) => {
  const iter = (n) => {
    if (string[n] === undefined) {
      return n;
    }
    return iter(++n);
  };

  return iter(0);
};
Ответ написан
Комментировать
@afanasiyz
Javascript-разработчик
const strLenght = (string) => {
  const iter = (n) => {
    if (string[n] === undefined) {
      return n;
    }
    return iter(++n);
  };

  return iter(0);
};


Важный момент в замене n++ на ++n
Описано тут
https://learn.javascript.ru/operators#inkrement-de...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
v3shin
@v3shin
Веб-шаман
Почему бы не использовать встроенные средства языка?
let strLenght = someString.length;
А в вашем коде можете использовать сравнение
typeof string[n] === 'undefined'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы