For a linked list such as 1 - >2 -> 3->4-> null

we are recursively calling the function to the smaller part of the linked list .and return head when we hit the base case

if( head ->next== NULL or head== 0){

return head;

}

node* shead = rec_recursive( head->next )

my doubt is that when we hit the base case then the recursive function return me the head .
Is the head pointing to 3 ?? or 4

Hey @anshulgurawalia what we are doing is traveling one step ahead of head node until it reaches last or second last node, and then from there we are getting out of recursion time to time and reversing the linked list.
SAY we had 1->2->3 -> 4 as LL
then after this line
(1’s->next i.e 2’s)->next will point to 1
so its now 1 point to 2 and 2 point to 1

See this to get an idea for visualization