Я попытался создать функцию HCF в javascript, используя рекурсивные функции, как показано в приведенном ниже коде. Но почему-то это работает только для точных кратных чисел (например, 2,4; 52,104 и т. д.). Со-простые числа также дают «неопределенность». Пожалуйста, помогите мне исправить ошибку.

Я попытался заменить переменную локальной области видимости c = a % b. Но и это не получается.

Код:

function hcf(a, b) {
    if (b == 1){
        return 1;
    } else if (a % b == 0){
        return b;
    } else {
        hcf(a,a % b);
    }
}

Тестовые случаи:

hcf(4,2);
hcf(108,52);
hcf(9,4);

Ожидаемые результаты:

2
4
1

Фактические результаты:

2 [Correct]
undefined [Incorrect]
undefined [Incorrect]
-1
Hayden Gunk 29 Окт 2019 в 21:43
1
HCF = наивысший общий множитель?
 – 
VLAZ
29 Окт 2019 в 21:44
1
В блоке else отсутствует return.
 – 
Heretic Monkey
29 Окт 2019 в 21:47

1 ответ

В рекурсивном случае требуется оператор return.

2
Scott Hunter 29 Окт 2019 в 21:46