It strongly depends on your system. If you have a stiff system then you should find some special algorithm. In a normal case (a non-stiff) I prefer the Predictor-Corrector methods. They have much better accuracy than single step methods (Runge-Kutta...etc) and they need only a few function call (like a single step method). The implementation of Adams-Bashoford (predictor) -- Adams Moulton (corrector) is quite easy. I have recently implemented it in Fortran for arbitrary order. See the following paper, where the generation of the necessary coefficient is described for arbitrary order:
B. Seidu, Int. J, Comp. Appl. Math., 2001, Vol. 6., pp. 215-220
I was looking for something less generic, to avoid lot of work i customization and to have good performances. It was a long time ago since I used Numerical Recipes, I'll refresh my memory and take a look at it anyhow.