Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2018, 13:35
Аспирант
Отправить личное сообщение для vitek-82 Посмотреть профиль Найти все сообщения от vitek-82
 
Регистрация: 18.03.2017
Сообщений: 30

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


прошу ответ понятным языком или ссылку, и прошу прощения если разбор уже был (искал, не нашел)
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2018, 13:37
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

e(n-=2); - ху из?
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2018, 13:51
Аспирант
Отправить личное сообщение для vitek-82 Посмотреть профиль Найти все сообщения от vitek-82
 
Регистрация: 18.03.2017
Сообщений: 30

так работает (буду разбираться почему):
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

Последний раз редактировалось vitek-82, 11.02.2018 в 14:01.
Ответить с цитированием
  #4 (permalink)  
Старый 11.02.2018, 14:03
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,788

Почему не так?
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

Последний раз редактировалось Nexus, 11.02.2018 в 14:09.
Ответить с цитированием
  #5 (permalink)  
Старый 11.02.2018, 14:45
Аспирант
Отправить личное сообщение для vitek-82 Посмотреть профиль Найти все сообщения от vitek-82
 
Регистрация: 18.03.2017
Сообщений: 30

Сообщение от Nexus Посмотреть сообщение
Почему не так?
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
спасибо! как по мне, так первый вариант наиболее эргономичный, но есть задание
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация для движения блока вниз и вверх snovapavel jQuery 9 24.12.2015 23:12
Борьба с Object.defineProperty в IE8 FINoM Оффтопик 46 04.09.2012 23:45
Классы в javascript harmony. Mахmахmахimus Оффтопик 4 16.03.2012 12:17
Классы в javascript? Mахmахmахimus Общие вопросы Javascript 74 19.02.2012 00:54
Наболевший this. Не могу понять Harvey Общие вопросы Javascript 6 19.08.2011 17:30