Climbing Stairs

来源:互联网 发布:steam数据库 编辑:程序博客网 时间:2024/06/06 00:14

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;    }


0 0
原创粉丝点击