您的位置:首页 > 移动开发 > Android开发

Android开发之不用for,if,while计算1--100之间的和

2016-08-12 08:37 435 查看
在不使用if,while,for,的前提下打印出1--100之间的数字并计算1--100之间数字的和。大家看到这里的时候,是不是有点不知所措,我们之前计算这个都是要循环来实现,即便是不用循环用递归实现的话,总要用if来作判定,然后然后返回一个值吧!但是在这里,这些都被限制了,怎么办呢?

大家想一下,有一个很特殊的运算符,有屏蔽的效果,是谁呢?他就是 &&  ,如 : a&&b++  当a为真的话,b的值会自增1,但是如果a为假,则b++不会执行,b还是原来的b。

我们就应用这个只是来实现下我们的题目。

我们先看下用Java如何实现:

[java] view
plaincopy

public static int printQ(int x){  

        System.out.println(x);  

        int y=(x!=0&&x!=1)?printQ(x-1):0;  

        return x;  

    }  

      

    public static int sum(int x){  

        int s=x;  

        int y=(x!=0)?s+=sum(x-1):0;  

        return s;  

    }  

      

    public static void main(String[] args) {  

        printQ(100);  

        int s=sum(100);  

        System.out.println("1--100之间数字的和::"+s);  

    } 

在这里我们用到了三元运算符:    表达式?结果1:结果2。

下面我们来看下用C++代码的实现:

[cpp] view
plaincopy

int print(int x)  

{  

    /*这两个方法都是可以的哦 

    x&&printf("%d         ",x); 

    x&&print(x-1); 

    return x; 

    */  

      

    printf("%d  ",x);  

    x!=0&&x!=1&&print(x-1);  

    return x;  

      

}  

  

int sum(int x)//当然这个方法也可以使用上面的三操作符  

{  

    int s=x;  

    x&&(s+=sum(x-1));  

    return s;  

}  

  

int main(int argc, char* argv[])  

{  

    print(100);  

    int s=sum(100);  

    printf("\n%d::::::",s);  

    return 0;  



我们这里没有使用三元运算符。

那么为什么在java代码中也像c++代码一样不用三元运算符呢?

因为在c++中我们知道 任何一个不等于0的数值和true是等价的,但是在java中可不是这么定义的!

java中的Boolean类型只有两个值,那就是true和false。

所以要想在java中不用三元运算符,我们还需要继续修改我们的程序。。。。。

另外一种方法:

使用switch代替if,使用goto代替循环,比较“投机取巧”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐