Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   return при рекурсии (https://javascript.ru/forum/misc/72591-return-pri-rekursii.html)

vitek-82 11.02.2018 13:35

return при рекурсии
 
Здравствуйте. Есть задача:

Ноль чётный. Единица нечётная. У любого числа N чётность такая же, как у N-2.Напишите рекурсивную функцию isEven согласно этим правилам. Она должна принимать число и возвращать булевское значение. Потестируйте её на 50 и 75. Попробуйте задать ей -1. Почему она ведёт себя таким образом? Можно ли её как-то исправить?

вопрос в следующем, почему данный код возвращает "undefined":

function isEven(n){
	if(n == 0){return 'true';}
	else if(n == 1){return 'false';}
	e(n-=2);
};

console.log(isEven(10)); // undefined
console.log(isEven(11)); // undefined


прошу ответ понятным языком или ссылку, и прошу прощения если разбор уже был (искал, не нашел)

j0hnik 11.02.2018 13:37

e(n-=2); - ху из?

vitek-82 11.02.2018 13:51

так работает (буду разбираться почему):
function isEven(n){
	if(n == 0){return 'true';}
	else if(n == 1){return'false';}
	else{return isEven(n-=2)};
};

console.log(isEven(10)); // true
console.log(isEven(11)); // false

Nexus 11.02.2018 14:03

Почему не так?
function isEven(n){
    return n%2==0;
}


upd. потому что есть задание.
Попробуйте так:
function isEven(n){
	if(n == 0)
		return 'true';
	else if(n == 1)
		return 'false';
	else 
		return isEven(n-2);
};

console.log(isEven(10)); // true
console.log(isEven(11)); // false
console.log(isEven(-1)); // error

vitek-82 11.02.2018 14:45

Цитата:

Сообщение от Nexus (Сообщение 477645)
Почему не так?
function isEven(n){
    return n%2==0;
}


upd. потому что есть задание.
Попробуйте так:
function isEven(n){
	if(n == 0)
		return 'true';
	else if(n == 1)
		return 'false';
	else 
		return isEven(n-2);
};

console.log(isEven(10)); // true
console.log(isEven(11)); // false
console.log(isEven(-1)); // error

спасибо! как по мне, так первый вариант наиболее эргономичный, но есть задание :)


Часовой пояс GMT +3, время: 08:31.