// Excluding not applicable arguments
const fact1 = function (n) {
function f(n) {
if (n == 0) return 1;
return n * f(n - 1);
}
if (n < 0) return -1; // not applicable
return f(n);
};
console.log("Factorial:");
for (let i = -3; i <= 16; i++) {
console.log(`${i}!=${fact1(i)}`);
}
const fib1 = function (n) {
function f(n) {
if (n <= 1) return n;
return f(n - 1) + f(n - 2);
}
if (n < 0) return -1; // not applicable
return f(n);
};
console.log("Fibonacci sequence:");
for (let i = -3; i <= 20; i++) {
console.log(`f(${i})=${fib1(i)}`);
}
Ly8gRXhjbHVkaW5nIG5vdCBhcHBsaWNhYmxlIGFyZ3VtZW50cwoKY29uc3QgZmFjdDEgPSBmdW5jdGlvbiAobikgewoJZnVuY3Rpb24gZihuKSB7CgkJaWYgKG4gPT0gMCkgcmV0dXJuIDE7CgkJcmV0dXJuIG4gKiBmKG4gLSAxKTsKCX0KCWlmIChuIDwgMCkgcmV0dXJuIC0xOyAgLy8gbm90IGFwcGxpY2FibGUKCXJldHVybiBmKG4pOwp9OwoKY29uc29sZS5sb2coIkZhY3RvcmlhbDoiKTsKZm9yIChsZXQgaSA9IC0zOyBpIDw9IDE2OyBpKyspIHsKCWNvbnNvbGUubG9nKGAke2l9IT0ke2ZhY3QxKGkpfWApOwp9Cgpjb25zdCBmaWIxID0gZnVuY3Rpb24gKG4pIHsKCWZ1bmN0aW9uIGYobikgewoJCWlmIChuIDw9IDEpIHJldHVybiBuOwoJCXJldHVybiBmKG4gLSAxKSArIGYobiAtIDIpOwoJfQoJaWYgKG4gPCAwKSByZXR1cm4gLTE7ICAvLyBub3QgYXBwbGljYWJsZQoJcmV0dXJuIGYobik7Cn07Cgpjb25zb2xlLmxvZygiRmlib25hY2NpIHNlcXVlbmNlOiIpOwpmb3IgKGxldCBpID0gLTM7IGkgPD0gMjA7IGkrKykgewoJY29uc29sZS5sb2coYGYoJHtpfSk9JHtmaWIxKGkpfWApOwp9