Не удается пройти проверку утверждения для функции рекурсии - PullRequest
1 голос
/ 19 марта 2020
var compareStr = function(str1, str2) {

    if (str1.slice(1) !== str2.slice(1)) {
        return false;
    } 

    if (str1.slice(1) === '' && str2.slice(1) === '') {
        return true;
    } 

     return compareStr(str1.slice(1), str2.slice(1));
}

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

AssertionError: expected 1 to be above 1

, который указывает на этот код:

  it('should use recursion by calling self', function() {
    compareStr('house', 'houses');
    expect(compareStr.callCount).to.be.above(1);
  });

Теперь я думаю, что происходит, если str1 и str2 не равны первому элементу, тогда моя функция возвращает false. На мой взгляд, это хороший крайний случай, так как после этого нет смысла выполнять функцию. Этот тест утверждения ищет результат false после того, как он прошел рекурсию хотя бы один раз? Это означает, что рекурсия должна произойти, по крайней мере, один раз, чтобы это прошло.

1 Ответ

1 голос
/ 19 марта 2020

Я думаю, что тест ожидает, что вы напишите функцию, которая сравнивает строки символ за символом, и в этом случае вам нужно перейти к окончательному s из houses для рекурсии к fini sh:

var compareStr = function(str1, str2) {
    console.log('compareStr called');
    return str1.length <= 1 || str2.length <= 1
      ? str1 === str2
      : compareStr(str1.slice(1), str2.slice(1));
};

console.log(compareStr('house', 'houses'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...