Кажется, вы хотите, чтобы max_number
было счетчиком количества чисел, которые должна записать функция, но на самом деле она записывает все числа Фибоначчи, меньшие или равные max_number
.То есть fibonacciseries(20)
не записывает 20 чисел, а записывает все числа Фибоначчи, которые меньше или равны 20. Это просто совпадение, что fibonacciseries(4)
& fibonacciseries(5)
в любом случае дают одинаковый результат.
Чтобы это исправить, не сравнивайте max_number
с n
, просто уменьшайте max_number
при каждом вызове и останавливайте, когда он достигает нуля.Чтобы прояснить ситуацию, я предлагаю переименовать этот аргумент:
function fibonacciseries(count, p, n) {
if(p === undefined) { p = 0;}
if(n === undefined) { n = 1;}
if(count <= 0) { return 0; }
console.log(n);
return fibonacciseries(count - 1, n, n + p)
}
console.log("Count of 3:");
fibonacciseries(3);
console.log("Count of 5:");
fibonacciseries(5);
console.log("Count of 7:");
fibonacciseries(7);