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代替循环,比较“投机取巧”。
大家想一下,有一个很特殊的运算符,有屏蔽的效果,是谁呢?他就是 && ,如 : 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代替循环,比较“投机取巧”。
相关文章推荐
- 不用for,if,while计算1--100之间的和
- 计算1-n的和(不用for, while, goto, if, else, switch, case和三目运算符, 也不用乘除法)---利用pow函数
- 计算1-n的和(不用for, while, goto, if, else, switch, case和三目运算符, 也不用乘除法)---利用间接递归
- 计算1-n的和(不用for, while, goto, if, else, switch, case和三目运算符, 也不用乘除法)---利用多态性
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
- 计算1-n的和(不用for, while, goto, if, else, switch, case和三目运算符, 也不用乘除法)---利用构造函数
- 不用循环 if for while 求1 。。。 n 之和
- 不用if、while、for、switch等语句及系统函数,实现求两数中的最大数的函数
- SQL Server(通过while 计算1---100之间奇数的和。通过while 计算1---100之间偶数的和。)
- 不用 乘除法_for_while_if_else_条件表达式 求 1+2+3……+N 的函数指针方法
- PHP 不用求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 计算1+2+3+...+n;不许用乘除法和if、 while、switch、for等关键字计算
- 不用乘除,for,while,if,else,switch,case ?:等求1+2+..+n的值
- C语言笔试题精选1---求两个数之间较大的数,不使用if、while、switch、for、?:/以及任何比较语句
- 黑马程序员之C#编程基础学习笔记:用while计算1到100之间整数的和;
- [置顶] Android开发,java开发程序员常见面试题,求100-200之间的质数,java逻辑代码
- 不用if,for等关键字计算1+2+...+n的结果
- 不用判断(if else等)和跳转语句(for while 等)求和以及连续输出
- android Monkeyrunner:Python语法知识学习(for,while,if用法实例)
- 6.用while计算1到100之间整数的和