Basic Explanation
FSRS uses a model of memory called DSR - Difficulty, Stability and Probability of Recall, or Retention, or Retrievability if you are Piotr Wozniak, although in his terminology "recall" and "retrievability" are different things...look, trying to come up with a good naming convention can be hard.
R is the probability that a user will recall a particular card on a particular day, given that card's repetition history. It depends on how many days have passed since the last review and on S. What's important is that every "honest" spaced repetition algorithm must be able to predict R, one way or another (even if it doesn't use memory stability). Otherwise it cannot possibly determine which intervals are optimal.
S is memory stability, it is defined as the amount of time, in days, during which R decreases from 100% to 90%. Higher is better. For example, S=365 means that an entire year will pass before the probability of recalling a particular card will drop to 90%. Estimating S is the hardest part, this is what FSRS is all about.
D is difficulty. Unlike the other two variables, difficulty has no precise definition and is calculated using a bunch of heuristics that are not based on a good understanding of human memory. Difficulty is just stuff that goes down if you press "Easy", and goes up if you press "Hard" or "Again".
Full Explanation (no maths)
For any given card, FSRS does the following:
If this is the first review:
- Set the initial S to one of the 4 precomputed values, one value for each grade - "Again", "Hard", "Good" and "Easy". Initial S is estimated during optimization using a method specifically designed for this purpose, and then 4 values are passed to the scheduler as parameters.
- Calculate initial D. Initial D depends only on the grade.
- Schedule the next review based on the estimate of S and desired R; the latter is chosen by the user.
If this is not the first review:
- Calculate the theoretical (predicted) R at the time of the review. It depends on 2 things: Δt and S. Δt is the number of days passed since the last review, and S is memory stability at the time of the review.
- Calculate D (the formula is different compared to the formula for the first review). D depends on 2 things: its own previous value and the most recent grade.
- Use D, S, and R to obtain a new estimate of stability after the review. Stability increases or stays the same after each successful review (the user pressed "Hard", "Good"," or "Easy") and decreases after a lapse (the user pressed "Again"). The new estimate of stability depends on 4 things: D, S, R, and grade. The formula is different if the user presses "Again".
- Schedule the next review based on the new estimate of S and desired R; the latter is chosen by the user.
Full Description With All The Math
To read more about the accuracy, click here.