good approach, tennis ball.
It is always robust and safe to divide into cases and count, and it should solve any question in gmat in a reasonable time.
i have another method for solving "partitioning" questions. however - this method works well if everybody should get at least 1. so i'll rephrase: instead of 3 people sharing 5 doughnuts with possibility of getting none. let 3 people share 8 doughnuts each get at least one. think about it for a minute and see that it is essentially the same question.
here is my method to solve it:
place the 8 doughnuts in a line. put 2 markers between doughnuts in different places to split the doughnut line into three groups, and you got a partition of the 8 doughnuts to three. the leftmost goes to person1, the middle goes to person2 the right goes to person3.
so we are left to count how many ways there are to place two markers between 8 doughnuts.
there are 7 places between 8 doughnuts, and if we want to put 2 markers we have 7C2 = 7*6/2 = 21 ways to do so.
this of course can be generalized to any number of doughnuts and any number of persons (but it may not work for apples though....

)