本で次の質問に遭遇しました:
N 段の階段があるとき、一度に 1 段、2 段、3 段のいずれかを使用すると、いくつの方法で登ることができますか?
以下は本が与えたコードです:
int countWays(int n){
if(n<0)
return 0;
if(n == 0)
return 1;
else return countWays(n-1) + countWays(n-2) + countWays(n-3);
}
このコードを理解する上で、次の懸念があります。
n=0 に対して 1 が返される理由がわかりません。歩数が 0 の場合、明らかに登る必要はなく、0 が返されます。
n=3 の場合、関数は 4 を返しますが、(1,1,1)、(1,2)、(3) の 3 つのケースしか確認できません。