There are several things you can try.
First, do a rough pass with the Performance Monitor, built into Windows. Add a counter for Process -> Private bytes used, and adjust the scaling accordingly so you can get a quick glance at memory usage. Instead of waiting overnight, you'll be able to identify a leak a little sooner. Another counter you can try is found in .NET Memory, but since my performance monitor isn't currently letting me add the .NET counters (ARGH!), I can't tell you exactly what the sub-selection is.
Are you allocated memory via unmanaged code in your calculation function? If so, are you Disposing of the memory properly? Any code you write that allocates memory this way should implement IDisposable, and you should also call Dispose() on these classes to make sure they get cleaned up.
Are you calling your function recursively? You could be allocating tons of memory each time through your function, and while you might not blow the stack, you'll be using up the heap.
Is there any memory you can get rid of sooner? Even if you aren't using unmanaged code, you can still flag your managed code so that the garbage collector deletes it sooner and then it won't end up in the Gen2 heap. Implement IDisposable, and then call Dispose() on classes that you don't need to hang around anymore.
Are you using threads? You could be allocating memory in your thread, and if you don't properly handle errors by calling EndInvoke, you'll orphan memory in this way.
If all else fails, try a memory profiler like ANTS5 from RedGate. It found another bug in my code, where I was registering an event handler, but not unregistering it. As a result, my code hung onto all of the bits and pieces related to this event, which unfortunately was also hanging onto bits of memory. :)
Hope this helps. I've gone through all of this recently and these are the most helpful tips I can come up with right now.