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.
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)SQL In The Wild
: Discussions on DB performance with occasional diversions into recoverability
We walk in the dark places no others will enter
We stand on the bridge and no one may pass