потому что при возврате вы звоните снова
function func(x) { <-- x=17
if (x <= 0) {
return x;
}
return func(x - 5); <---x=12 so now you call the func with 12
}
console.log(func(17));
шаг 2
function func(x) { <-- x=12
if (x <= 0) {
return x;
}
return func(x - 5); <---x=7 you call with 7
}
console.log(func(17));
шаг 3
function func(x) { <-- x=7
if (x <= 0) {
return x;
}
return func(x - 5); <---x=2 you call with 2
}
console.log(func(17));
шаг 4
function func(x) { <-- x=2
if (x <= 0) {
return x;
}
return func(x - 5); <---x=-3 you call with -3
}
console.log(func(17));
последний шаг
function func(x) { <-- x=-3
if (x <= 0) {
return x; <--- now you print the result
}
return func(x - 5);
}
console.log(func(17));
Редактировать:
Рекурсивные функции - это функции, которые вызывают себя до тех пор, пока условие прерывания не станет его истинным, в вашем примере это условие прерывания равно x его равному (=) илименьше (<) чем 0, а затем выведите результат. </p>
с 17 - первое число, которое вы получите, 5, возвращающее истинное условие con-break, равно -3