现在的位置: 首页 > 综合 > 正文

Climbing Stairs

2017年12月23日 ⁄ 综合 ⁄ 共 382字 ⁄ 字号 评论关闭

Climbing Stairs

我的思路:

1  这题可以用递归也可以用公式,明显用公式是最快的。假设n个台阶的结果是F(n),当你完成的时候,完成之前跳的情况只有两种,要不是跳了两步,那时是在倒数第二个台阶(也可以认为是倒数第三个台阶)F(n - 2),还有一个可能是跳了一个台阶是F(n - 1)。只有这两种可能,所以,结果是F(n) = F(n - 1) + F(n - 2)。

代码如下:

    int climbStairs(int n) {
        if (n < 0) 
    		return 0;
    	else if (n == 1)
    		return 1;
    	else if (n == 2)
    		return 2;
    	int answer, before = 2, morebefore = 1;
    
    	for (int i = 3; i <= n; ++i) {
    		answer = before + morebefore;
    		morebefore = before;
    		before = answer;
    	}
    	return answer;
    }

抱歉!评论已关闭.