No, there is a problem with your logic.
Look at your code: I'll indent it a bit more clearly so it's more obvious.
int find_max(int *array,int max,int i)
There are two things to note here:
1) It isn't recursive, or at least not directly. Recursion means calling the same method from within the method (or in a method it calls). Unless find_min calls find_max, there is no recursion here.
2) Your method always returns the same value - the max that was passed in. it doesn't matter what find_min does, because you always ignore the result.
I'd suggest that you need to take a couple of steps back, make yourself a coffee and start the exercise again when you have finished it! :laugh: