-1

私は、子供が一度に1、2、または3ステップでステップnの階段を飛び越えることができる再帰的な問題を見ています。私が見ているコードは、フィボナッチのようなものに似た関数です。しかし、n == 0の場合、なぜ1が返されるのでしょうか。合計ステップ数が0の場合、登る方法はゼロではないでしょうか。なぜそれを登る1つの方法があるのですか?

int f(int n)
{
if(n<0)
return 0;
else if(n==0)
return 1;
else 
return f(n-1) + f(n-2) + f(n-3);
}
4

2 に答える 2

3

これはより論理的な質問です。あなたがそこに立って何もしないとします。何段登りましたか?答えはゼロです。それで、あなたはゼロステップを登ることに成功しましたか?はい。

ゼロ階段を登る方法は何通りありますか? たったひとつの方法:あなたはそこに立って、階段を上らないでください。

于 2012-10-01T01:25:40.430 に答える
0

それは本当に有効な質問ではありません。

これは再帰的な実装であるため、有効な最低値より1少ないf(nmin)場合の境界ケースを常に提供する必要があります。nminn

したがって、ケースn = 0は、。のすべての値に対して正しい結果を保証するのに役立つ境界条件ですn > 0

言い換えれば、それは(おそらく)何も意味しない、あるいは、それはおそらくあなたがそれが意味すると思うものとは異なる何かを意味するでしょう。それがしなければならないのは、の正しい結果を保証することだけですf(1)

いいえ、等しくないのと同じように、階段を上る0方法はありません。それは不確定な結果です。00/00

于 2012-10-01T01:42:07.220 に答える