巧妙计算sum(100)
来源:互联网 发布:吴鉴鹰51单片机百度云 编辑:程序博客网 时间:2024/05/21 09:07
先来描述一下这道面试题,题目很简单:在不使用if,while,for,的前提下打印出1--100之间的数字并计算1--100之间数字的和。大家看到这里的时候,是不是有点不知所措,我们之前计算这个都是要循环来实现,即便是不用循环用递归实现的话,总要用if来作判定,然后然后返回一个值吧!但是在这里,这些都被限制了,肿么办呢?
大家想一下,有一个很特殊的运算符,有屏蔽的效果,是谁呢?他就是 && ,如 : a&&b++ 当a为真的话,b的值会自增1,但是如果a为假,则b++不会执行,b还是原来的b。
我们就应用这个只是来实现下我们的题目。
我们先看下用Java如何实现:
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++代码的实现:
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中不用三元运算符,我们还需要继续修改我们的程序。。。。。
- 巧妙计算sum(100)
- 巧妙计算sum(100)
- 巧妙计算中英文混合的长度问题
- 巧妙实现之c语言计算文件大小
- csu_1179 sum 数学 计算
- 一个用C语言计算平方根的巧妙算法
- UVa 1625 color length--dp状态转移的巧妙计算
- 巧妙地计算几何 Dancing Stars on Me
- 巧妙解决整数二进制计算1的个数
- 循环-计算sum的值
- sum(..) over(..)在计算权重中的应用
- DB2 汇总值SUM的计算
- 循环——计算SUM的值
- 一道很有意思的题目,计算sum
- Sum(快速幂+大整数计算)
- Tricky Sum(纯数学计算)
- HDU1868 Consecutive sum【数学计算+枚举】
- HDU2058 The sum problem【数学计算+枚举】
- TOMCAT 数据源配置不同版本有不同配置法
- 近百android程序源码贡献
- Oracle数据库实例SGA内存结构以及初始化参数的设置
- extern变量
- 女孩愿意剩,男孩却是被剩
- 巧妙计算sum(100)
- spring的DriverManagerDataSource与apache的BasicDataSource(转)
- Android模拟器学framework和driver之battery & backlight-----6. backlight in hal
- 【好书推荐】-人月神话
- SDRAM DQM的解释,总算明白了
- spring配置dbcp连接池
- RichEditDemo
- 输出文件时文件名称乱码
- 【转】makefile 获取指定目录下源文件名称