zoukankan      html  css  js  c++  java
  • 跳台阶

    错误写法:

    class Solution {
    public:
        int jumpFloor(int number) {
            if(number <= 0)
                return 0;
            int result[2] = {1,2};
            else if(number <= 2)
                return result[number-1];
            int num1 = 1;
            int num2 = 2;
            int num3 = 0;
            for(int i = 3;i <= number;i++){
                num3 = num1 + num2;
                num1 = num2;
                num2 = num3;
            }
            return num3;
        }
    };

    else if这一句会报错,else if应该是紧跟在if语句后面,中间不能插入其他语句,不然else if不知道之前的if是哪一个。

    正确写法:

    class Solution {
    public:
        int jumpFloor(int number) {
            int result[2] = {1,2};
            if(number <= 0)
                return 0;
            else if(number <= 2)
                return result[number-1];
            int num1 = 1;
            int num2 = 2;
            int num3 = 0;
            for(int i = 3;i <= number;i++){
                num3 = num1 + num2;
                num1 = num2;
                num2 = num3;
            }
            return num3;
        }
    };

    这里要强调一下else if与if 的不同。这段代码,把else if换成if也是正确的,但并不代表else if和if是一样的。

    现在假设把number小于0情况后面的语句换成不是return,而是其他语句,并且假设number = -1,。

    1.else if的情况:number只执行number < 0这种情况的语句,不会进入number < 2这种情况去执行语句。虽然else if只写了一个number <= 2,但因为有else,实际上

    的条件是0 < number <=2。

    2.if的情况:number执行完number < 0的语句,顺序执行number < 2的语句。这里的number < 2就是所有小于2的number。

    之所以这里一样,是因为number < 0的时候直接return,结束了整个程序。

  • 相关阅读:
    新概念4-16
    答疑汇总-02
    理解Marx-8 9 10晚年的思考 马恩关系再认识 一段思想史的公案
    nefu 116
    nefu 115
    【JZOJ3379】查询【主席树】
    【JZOJ1782】Travel【分层图最短路】
    【洛谷P4550】收集邮票【期望概率】
    【洛谷P1001】A+B Problem
    【JZOJ3339】wyl8899和法法塔的游戏【暴力】
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6882523.html
Copyright © 2011-2022 走看看