найти длину строки без использования циклов, встроенных методов или свойства .length в javascript? - PullRequest
1 голос
/ 08 апреля 2020

Я застрял на этой проблеме довольно давно. В дополнение к тому, что мы не используем встроенные методы и свойство length, мы также не можем использовать какие-либо циклы, что является преимуществом того, что эта проблема должна быть решена с помощью рекурсии. Я пробовал эту функцию, но все еще застрял.

function getLength(string, length = 0){
  if (string[0] === undefined) {return length};
  length++;

  return getLength(length);
}

console.log(getLength("hello")) 
// expected answer: 5

Ответы [ 3 ]

1 голос
/ 08 апреля 2020

Ты очень близко.

function getLength(string, length = 0){
  if (string[length] === undefined) {return length};
  length++;

  return getLength(string, length);
}

console.log(getLength("hello")) 
// expected answer: 5
0 голосов
/ 08 апреля 2020

Вы можете определить базовый случай рекурсии, который завершит рекурсию, например, когда переданная строка равна empty / undefined / null или индекс, по которому вы находитесь в рекурсивном процессе, превысил длину данной строки, и в этом случае вы бы вернули 0.

Затем рекурсивно вызвали функцию, увеличив индекс строки и добавив 1 в каждом рекурсивном процессе до достижения базового условия:

function getLength(str, idx = 0) {
  //base case
  if (!str || !str[idx]) {
    return 0;
  }
  return 1 + getLength(str, idx + 1);
}
console.log(getLength("hello"));
0 голосов
/ 08 апреля 2020

Вы уже поняли ответ, который вы только что пропустили, несколько параметров

function getLength(string, length = 0) {
  if (string[length] === undefined) {
    return length
  };
  length++;

  return getLength(string, length);
}

console.log(getLength("hello"))
...