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

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


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

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

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

[java]  view plain copy
  1. public static int printQ(int x){  
  2.         System.out.println(x);  
  3.         int y=(x!=0&&x!=1)?printQ(x-1):0;  
  4.         return x;  
  5.     }  
  6.       
  7.     public static int sum(int x){  
  8.         int s=x;  
  9.         int y=(x!=0)?s+=sum(x-1):0;  
  10.         return s;  
  11.     }  
  12.       
  13.     public static void main(String[] args) {  
  14.         printQ(100);  
  15.         int s=sum(100);  
  16.         System.out.println("1--100之间数字的和::"+s);  
  17.     } 

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

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

[cpp]  view plain copy
  1. int print(int x)  
  2. {  
  3.     /*这两个方法都是可以的哦 
  4.     x&&printf("%d         ",x); 
  5.     x&&print(x-1); 
  6.     return x; 
  7.     */  
  8.       
  9.     printf("%d  ",x);  
  10.     x!=0&&x!=1&&print(x-1);  
  11.     return x;  
  12.       
  13. }  
  14.   
  15. int sum(int x)//当然这个方法也可以使用上面的三操作符  
  16. {  
  17.     int s=x;  
  18.     x&&(s+=sum(x-1));  
  19.     return s;  
  20. }  
  21.   
  22. int main(int argc, char* argv[])  
  23. {  
  24.     print(100);  
  25.     int s=sum(100);  
  26.     printf("\n%d::::::",s);  
  27.     return 0;  

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

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

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

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

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


另外一种方法

使用switch代替if,使用goto代替循环,比较“投机取巧”。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值