組み合わせを解くプログラムを勉強していて(スレチかもしれませんが)、
以下のようなサンプルが載せられていました。

long combi(int n, int r) {
int i;
long p = 1;

for (i = 1; i <= r; i++) {
p = p*(n - i + 1) / i;
}
}

解説には、漸化式(自分自身nCrを、1次低い自分自身nCr-1で表し、0次nC0はある値に定義されているとするもの)
を用いると書いてあるんですが、
どうやって、p = p*(n - i + 1) / i; の式を考えるのか整理ができません。

公式等をどう変換したら漸化式にできるのでしょうか?

また、組み合わせの公式等は皆さん公式として覚えているのでしょうか?
それとも、組み合わせはこういう考えだから、こういう式がなりたつみたいに、
公式を0から組み立てることができるのでしょうか?(公式を忘れてしまった場合、自力で思い出したい場合に応用を利かせたい)