Looping versus recursion is not specific to the C language.
It is said that any problem which can be solved by recursion can be solved by iteration (looping). It is true, but sometimes the iterative way to do something is much more complex to set up and implement.
Consider the following problem:
You want to get the total size of a directory -- that is, the size of all the files in it and the size of all the files in its subdirectories, and that subdirectories' subdirectories, etc.
You could write a function that gets the directory listing, adds up the the file sizes, then goes through all the subdirectories calling itself on THOSE directories, and return the sum, to be added to the total in the calling function. What makes this recursive is that the function is calling itself. This is sometimes easier to think of, but often will use more memory.
Alternately, a function can add the file sizes, then add each directory to a list of further jobs needing to be done before the process is complete. Then, if there are any items in the job, it must switch to that directory and do the same. This would be the iterative way to do it.
But like all questions of which is better, it's an engineering discretion problem. If you have 15 minutes to write the program, and 4 gigs of ram, then by all means, use the recursive way. If you have all the time you need, but you must run in a very restricted environment, perhaps the iterative way is the best.