chkdsk /r does the same thing as chkdsk /f only it also checks for bad sectors on the disk and recovers any readable information. Running chkdsk /r implies that also chkdsk /f is run.
chkdsk /f only checks for disk errors, not bad sectors.
Microsoft has a detailed page for chkdsk. The following is a snippet explaining /f and /r parameters.
Fixing disk errors:
Chkdsk corrects disk errors only if you specify the /f command-line
option. Chkdsk must be able to lock the drive to correct errors.
Because repairs usually change a disk's file allocation table and
sometimes cause a loss of data, chkdsk sends a confirmation message.
Finding physical disk errors:
Use the /r command-line option to find physical disk errors in the
file system.