private static Node<Integer> add_HeadOnesDigitData_Recursive_Internal(Node<Integer> num1, Node<Integer> num2,
            int carry) {
        if (num1 == null && num2 == null && carry == 0) {
            return null;
        }
        Node<Integer> result = new Node<Integer>(null);
        int value = carry;
        if (num1 != null) {
            value += num1.data;
        }
        if (num2 != null) {
            value += num2.data;
        }
        result.data = value % 10;

        Node<Integer> nextNode = add_HeadOnesDigitData_Recursive_Internal(num1 == null ? null : num1.next,
                num2 == null ? null : num2.next, value / 10);
        result.next = nextNode;
        return result;
    }