isEven(0) -> true; isEven(Num) -> isOdd(Num-1). isOdd(0) -> false; isOdd(Num) -> isEven(Num-1).
https://www.npmjs.com/package/is-even
don’t look at the weekly downloads if you are faint of heart.
https://10xengineersqualityprogramming.github.io/ https://www.npmjs.com/package/@falsejs/falsejs This is hilarious, has 262 of the best useless dependencies. In all seriousness though how does anyone ever audit a non package, it’s dependency hell!
If you really want to see some horror, follow the dependencies
Removed by mod
Removed by mod
Fixed
boolean isOdd(int num) { if(num == 1) return true; if(num > 0) return isEven(num - 1); else return isEven(num + 1); } boolean isEven(int num) { if(num > 0) return isOdd(num - 1); else return isOdd(num + 1); }
Why the complicated if statements to check the sign? Just let the number overflow. Would be functionaly the same, and result in much prettier code.
That’s a platform dependent change. Overflow is undefined behavior. I’d rather have my code portable so it can run on my Univac 1101.
the downside with this approach is that it will eventually terminate. the version in the original post has the advantage of giving me plenty of time to contemplate life’s many mysteries.
What can I say, I’m a performance nerd.
bool isOdd(int num) { const oddNumbers = []; for (let i = 1; i <= 10000000; i += 2) { oddNumbers.push(i); } if (oddNumbers.includes(num) { return true; } }
isOdd(-1);
deleted by creator
isOdd(10000001);
this incident has been reported
Maybe memo just to be safe, but LGTM!
You should make it
oddNumbers.includes(num%10000000)
…And if not, unicorns!
Boss: don’t spend any time on it, just vibe code a solution.
You: sure, I enjoy receiving a salary, what could go wrong?
Mood…
To fix this, add
if(num == 255) return true;
before line 10.Peak efficiency there.
But use 2147483647 to be safe.
Will this ever return? Won’t it just overflow the stack?
Yep, this will cause a stack overflow.
A mod will appear in my office and claim my problem is a duplicate when it’s not?
Might very well be an endless loop because tail recursion can be optimized to reuse the stack frame. Depends on a lot of things of course.
deleted by creator
Hm, stack overflow is basically a forkbomb in programming?ok, bullshit.Forkbomb kills the entire system so not really.
With the stack overflow the runtime will gracefully terminate the program.
No.
A stack overflow is a symptom, not the illness. A fork bomb is an illness.
Software coming from the mathematical point of view, assummes it has infinite resources. However, a real computer has many resources that are finite.
CPU time is finite. Memory amount is finite. There is a finite number of network ports. And so on.
A stack overflow just means: “you have run out of this resource called ‘the stack’”. The stack is a region of the memory. Each thread of each process has 1 stack, and it is not infinite in size. This program will cause a stack overflow because it is infinitely recursive, and each function call will consume a bit of the stack.
A forkbomb is not the end of a finite resource. A fork bomb is a program that uses “forking” to rapidly consume system resources. A fork bomb might cause a stack overflow. Or an out of memory issue. Slow the computer a lot. Or if the OS has a hard limit for process amount, it might reach that limit.
A program such as the one in this post is a loop designed (intentionally or not) to run out of stack regardless of how much there is. I’d call that an illness rather than a symptom.