Probably there is not an absolute answer for the titular question and several variables and considerations should be taken into account. However, the following resources may be useful:
i have similar work for my first machine learning project,i tried to make a simple Movie recommendation system by following toby segaran's book called "programming collective intelligence"
here is my simple project,you can give it a try: https://github.com/mobassir94/Programming-Collective-Intelligence-Using-PYTHON/tree/master/recommendations
since it is hard to tell exactly which algorithm will do best in your data set without seeing and analyzing your data, so i will suggest you to try some algorithms and choose the one that works best for you.
Actually recommender systems are based on euclidean distance and correlation measurements like pearson correlation r,
k-means clustering is a good choice to cluster different type of books,as you might know that recommendation systems are like "people who bought
this (say burger) also bought that (say sausage)",for this kind of problems association rule mining is best,so algorithms like apriori,eclat,fp-growth will probably do well in your data set,
but if your data set is huge then you may run out of computational power,to avoid such problems you can use pca,kernel pca or lda to reduce dimensions and extract features,you can also try powerful algorithms like xgboost and new algorithm called catboost for your dataset and see which one works best for your data set,thanks
my suggestion is to read the chapter about recommender systems in "Mining Massive Datasets" http://www.mmds.org/. There you can get the idea for which types of problems the two basic approaches are good for and that often you need an hybrid approach.
I am completely agree with Shashi Prakash Tripathi , it is difficult to say the X algorithm is the best algorithm, U shall build ur model , try many algorithms and based on ur dataset and ur goals of building the recommender system u will decide which is best for u. I suggest to start with collaborative-based approach bcz it is most common used recently.