public int product (int m, int n) { if (m == n) return m; int middle = (m+n) / 2; return product (m, middle) * product (middle+1, n); } // reversing Lists recursively public ListNode concat2 (ListNode node1, ListNode node2) { if (node1 == null) return node2; node1.next = concat2 (node1.next, node2); return node1; } public ListNode reverse_helper (ListNode node) { if (node == null) return null; ListNode tail = node.next; node.next = null; return concat2 (reverse_helper(tail), node); } public void reverse2 () { head = reverse_helper (head); }