When recalculating, the app tries to find the optimal route for the same destination. Which is why at first it will recalculate the route and suggest that you make a U-turn and get back to the route you’ve been following initially.
If you keep following a new route, it may still make several recalculations in the same manner trying to get you back to the same route. When going back and following the original route is not optimal any longer, the app will calculate a new route.
Also, recalculation time depends on connection quality and speed a lot, as the app needs to connect to server to calculate the route.