import junit.framework.TestCase;
// Question from https://www.facebook.com/groups/javaharikrishna/permalink/2189431594515722/
public class ClimbStairsTest extends TestCase {
private static int waysToClimbStairs(final int numberOfStairs) {
if (numberOfStairs == 0) {
return 1; // There's only one way: You're already there, with zero steps!
} else if (numberOfStairs == 1) {
return 1; // 1 step only
// } else if (numberOfStairs == 2) {
// return 2; // 1+1 and 2
} else {
final int solutionAfterGoingUpOneStair = waysToClimbStairs(numberOfStairs - 1);
final int solutionAfterGoingUpTwoStairs = waysToClimbStairs(numberOfStairs - 2);
return solutionAfterGoingUpOneStair + solutionAfterGoingUpTwoStairs;
}
}
public void test() {
assertUniqueWaysToClimbStairs(1, 0); // There's only one way: You're already there, with zero steps!
assertUniqueWaysToClimbStairs(1, 1);
assertUniqueWaysToClimbStairs(2, 2);
assertUniqueWaysToClimbStairs(3, 3);
assertUniqueWaysToClimbStairs(5, 4);
assertUniqueWaysToClimbStairs(8, 5);
assertUniqueWaysToClimbStairs(13, 6);
assertUniqueWaysToClimbStairs(21, 7);
assertUniqueWaysToClimbStairs(34, 8);
assertUniqueWaysToClimbStairs(55, 9);
assertUniqueWaysToClimbStairs(89, 10);
// Turns out, it's the Fibonacci Sequence.
}
private static void assertUniqueWaysToClimbStairs(final int expectedWays, final int numberOfStairs) {
assertEquals("for <" + numberOfStairs + "> stairs;", expectedWays, waysToClimbStairs(numberOfStairs));
}
}
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|👍
/👎