Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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:

  1. 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.

  2. 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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.8k views
Welcome To Ask or Share your Answers For Others

1 Answer

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.

When there are no steps you just go through without climbing, which is the one and only one way. As is pointed out in one of the comments, it can be represented as ().

For n=3 function returns 4 but i can see only 3 cases i.e. (1,1,1), (1,2), (3).

There are actually 4 cases: (1,1,1), (1,2), (2,1), (3).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...