美文网首页
70.climbStairs

70.climbStairs

作者: 花落花开花满天 | 来源:发表于2018-11-07 11:25 被阅读0次

    You are climbing a stair case. It takes n steps to reach to the top.

    Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

    Note: Given n will be a positive integer.

    Example 1:

    Input: 2

    Output: 2

    Explanation: There are two ways to climb to the top.

    1. 1 step + 1 step

    2. 2 steps.

    Example 2:

    Input: 3

    Output: 3

    Explanation: There are three ways to climb to the top.

    1. 1 step + 1 step + 1 step

    2. 1 step + 2 steps

    3. 2 steps + 1 step

    一个数只能由1和叠加起来,例如5可以由这样叠加起来:

    结果可按普通的递归公式得到,但根据规律发现结果与斐波那契数列结果相同,所以使用此方法也可得到结果。

    代码1:使用普通方法

    int climbStairs(int n) {

        return climb_Stairs(0,n);

    }

    int climb_Stairs(int i,int n)

    {

        if(i>n)

            return 0;

        if(i==n)

            return 1;

        return climb_Stairs(i+1,n)+climb_Stairs(i+2,n);

    }

    代码2:使用斐波那契数列

    int climbStairs1(int n) {

        if(n==1)

            return1;

        int first=1,second=2,third;

        for(int i=3;i<=n;i++)

        {

            third=first+second;

            first=second;

            second=third;

        }

        return second;

    }

    相关文章

      网友评论

          本文标题:70.climbStairs

          本文链接:https://www.haomeiwen.com/subject/sibmxqtx.html