Convex dynamic programming with (bounded) recursive utility