There are two reasons why a database goes into the recovering state. SQL is restarted or the database is being closed and reopened (offline, autoclose, etc).
Check the logs, ensure that SQL is not being restarted, that the DBs don't have autoclose on, that there's nothing taking them offline.
btw, restarting SQL is not a fix for a DB in the recovering state, it's a cause. Restarting SQL when you have a database in the recovering state means it'll take longer to come online, not less time.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability