This article proposes an iterative deadlock resolution method for flexible manufacturing systems modeled with G-systems. To design a non-blocking controlled system with maximally permissive behavior in a G-system (GS), a reachability graph-based analysis technology is utilized. Since the reachability graph of a large-scale GS easily becomes unmanageable, an optimal non-blocking supervisor becomes a challenging problem in a GS. To facilitate this problem, the Divide-and-Conquer approach is a good choice for complex G-systems. First, an uncontrolled GS resolves into a number of associated subnets. Then, every subnet suffering from deadlocks is utilized to design the liveness-enforcing supervisor for the original GS. Thus, additional monitors can be obtained if the liveness of all subnets is achieved. Subsequently, a partially controlled GS is derived by including all monitors within the GS, and its liveness can be ensured by designing a new set of monitors. Consequently, a non-blocking GS is derived. The major advantage of the proposed method is that a nonblocking supervisor with near-optimal behavioral permissiveness can be obtained in general. Finally, a typical GS example popularly studied in the literature is applied to demonstrate the validity and the availability of the method in this article.