Everywhere on net I see the program which start revering from tail like
here node is the header node
reverseNode(int node){
    if(node==null){
        return;
    }
    reverseNode(node.next);
    Node temp = node.next;
    node.next = node.prev;
    node.prev=temp;
    if(node.prev==null){
        headNode = node;
    }
}
But I can think of approach where i can reverse from header node also like
here node is the header node
reverseNode(int node){
    if(node==null){
        return;
    }
    Node temp = node.next;
    node.next = node.prev;
    node.prev=temp;
    reverseNode(node.prev);
   if(node.prev==null){
       headNode = node;
   }
}
But I do not see approach mentioned anywhere. Is there any bug/issue in this approach or its not optimized ?