Sensex recovers 300pts, Nifty above 23,500; energy stocks lead