In a book I encountered following question:
Given N step stair, in how many number of ways can you climb if you use either 1, 2 or 3 steps at a time?
Following is the code that book has given:
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);
}
I have the following concerns in understanding this code:
I do not understand why 1 is being returned for n=0. If there are 0 steps then obviously we do not have to climb any and 0 should be returned.
For n=3 function returns 4 but i can see only 3 cases i.e. (1,1,1), (1,2), (3).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…