In classification tasks, the user tries to predict a category, which is commonly represented as an integer label but actually represents a group of "objects." You could, for example, use label 0 for "Rat" and 1 for "Cat" to categorize photographs into "Rat" and "Cat" categories.
The KNN classification algorithm will look at the k closest neighbors of the input you're trying to predict. The most common label among the k samples will then be output.
The user wishes to get a numerical value out of regression tasks (usually continuous). For example, it could be used to determine the value of a home or to rate the quality of a film.
In this situation, the KNN method would combine the values associated with the k nearest examples from the one on which you wish to make a prediction to produce a single value. Normally, the average of the neighbors' k values would be used, however the median or a weighted average might also be used (or actually anything that makes sense to you for the task at hand).
You could use both for your problem, but I think regression makes more sense for predicting some sort of "matching %"" between the user and the object you want to recommend to him.
Also K NN is a lazy learner as it learns via instances and also known as instance based learning.
Might become slow with large data set.