Definitely go for it. Recursion is a very valuable tool when it comes to programming and while the concept may be a bit abstract at first, it'll click eventually.
The way I always think about it is when writing recursive functions, you call that function on the assumption that it does what it should, even though right now it may not.
For example, in implementing the following code:
Code:
#include <stdio.h>
int cumulativeSum(int lst[],int size)
{
if(!size) return 0;
else return lst[0]+cumulativeSum(&lst[1],size-1);
}
int main()
{
int list[5]={1,2,3,4,5};
printf("%d",cumulativeSum(list,5));
return 0;
}
The code above will output 15, which is the cumulative sum of the list.
Now, you can easily think of the implementation as saying, add the first element to the sum of the rest of the list. cumulativeSum is supposed to return the sum of a list, so if we pass the rest of the list and add that to the first element's value, we'll get the sum of the entire list. So when writing recursive code, just write it under the premise that it works and does what you think it will, and it'll be much easier.
Also, think of recursive functions as having a "base case". This base case is the case on which your recursive function stops. In the code above it stops when the size of the list is 0. Therefore we return what is logically the sum of an empty list (0) and then our recursive function automatically unwinds from there.