I am working on Problem 14 on Project Euler, and my code seems to freeze at random intervals for no apparent reason.
static void Main()
{
int maxNum = 0;
I've solved it in another way, by caching the result for each step, and I've found your problem. I doubt your program ever stops.
The statement num = (3 * num) + 1
may overflow over Int32.MaxValue
and result in a negative number and an infinite loop(?).
In this case, you can solve the problem by using long
for your x.
I bet that this version doesn't freeze, there's no reason it should do that.
The Collatz sequences before you hit 1 in the inner while loop are too short to lead to a noticeable delay, and if they would that should always happen at the same numbers.
If you add console output inside the loop then this may allocate memory, and the pauses you see could be due to garbage collection.
If goes into infinite loop in while (num != 1)
.