refactor: Depth First Search(DFS)
diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py
index 2e209d2..6be28c8 100644
--- a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py
+++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py
@@ -1,7 +1,7 @@
 # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 
-from math import ceil, floor
+from math import floor
 
 import frappe
 from dateutil.relativedelta import relativedelta
@@ -12,11 +12,18 @@
 class BisectAccountingStatements(Document):
 	@frappe.whitelist()
 	def bisect(self):
-		cur_frm_date, cur_to_date = getdate(self.from_date), getdate(self.to_date)
-		while True:
+		period_list = [(getdate(self.from_date), getdate(self.to_date))]
+		dates = []
+		while period_list:
+			cur_frm_date, cur_to_date = period_list.pop()
 			delta = cur_to_date - cur_frm_date
-			if delta.days == 0:
-				return
+			if not delta.days > 0:
+				continue
+
 			cur_floor = floor(delta.days / 2)
-			cur_to_date = cur_frm_date + relativedelta(days=+cur_floor)
-			print((cur_frm_date, cur_to_date), delta, cur_floor)
+			next_to_date = cur_frm_date + relativedelta(days=+cur_floor)
+			left = (cur_frm_date, next_to_date)
+			period_list.append(left)
+			next_frm_date = cur_frm_date + relativedelta(days=+(cur_floor + 1))
+			right = (next_frm_date, cur_to_date)
+			period_list.append(right)