Nice code, easy to understand. The "fair" is due to a small bug that jumped up as soon as I try pricing a call in the CRR method.
line52 of AmericanOptCRR should read as max(V(jj)-K,0);
It is a pity cause it means the code appears nice but it has not be fully tested. Also the case in which a div yeld or dividends are present should be put in to obtain a nice and clean library.
Best,
M.