Пожалуйста, кто-то, пожалуйста, объясните мне разницу между функциями, упомянутыми ниже - PullRequest
0 голосов
/ 14 марта 2019

Первая функция

function isPrime(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0){
            return false;
        }else{
            return true;
        }
    }
}

Вторая функция

function isPrime(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0)
            return false;
    }
    return true;
}

Я действительно не могу сосредоточиться на этом коде ..

1 Ответ

0 голосов
/ 14 марта 2019

Первый остановится сразу после первой итерации из-за оператора else.return разрывает петлю.Он только проверит, является ли указанное вами число четным или нечетным num%2 == 0.

Второй остановится только в том случае, если условие проверено (опять же, возврат прерывает цикл) или в конце всехитерации.

В вашем примере только второй дает ожидаемый результат:

function isPrimeA(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0){
            return false;
        }else{
            return true;
        }
    }
}

function isPrimeB(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0)
            return false;
    }
    
    return true;
}

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