加法 java_java实现加法
题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
如果不加限制这个题目就是小学生的难度,但是现在有限制条件应该就要开动脑筋了,肯定要用到位运算。
解题思路:
1.需利用逻辑与的短路特性实现递归终止。2.当n==0时,(n>0)&&((sum+=Sum_Solution(n-1))>0)只执行前面的判断,为false,然后直接返回0;
3.当n>0时,执行sum+=Sum_Solution(n-1),实现递归计算Sum_Solution(n)。
public
int Sum_Solution(int
n) {
int
sum = n;
boolean
ans =
(n>0)&&((sum+=Sum_Solution(n-1))>0);
return
sum;
}
还有一个不容易想到的,其实就是利用公式n*(n+1)/2,
public int Sum_Solution(int n) {
int sum =
(int) (Math.pow(n,2) + n);
return
sum>>1;//相当于除以2
}
在看一题
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2。
第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。
第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。 同样我们可以用三步走的方式计算二进制值相加:
5-101,7-111 第一步:相加各位的值,不算进位,得到010,二进制每位相加就相当于各位做异或操作,101^111。
第二步:计算进位值,得到1010,相当于各位做与操作得到101,再向左移一位得到1010,(101&111)<<1。
第三步重复上述两步, 各位相加
010^1010=1000,进位值为100=(010&1010)<<1。
继续重复上述两步:1000^100 = 1100,进位值为0,跳出循环,1100为最终结果。
public int
Add(int
num1,int num2) {
while
(num2!=0) {
int
temp = num1^num2;
num2
=
(num1&num2)<<1;
num1
= temp;
}
return
num1;
}
还有一个更巧妙的
public int
Add(int
num1,int num2) {
BigInteger
bi1=new
BigInteger(String.valueOf(num1));
BigInteger
bi2=new
BigInteger(String.valueOf(num2));
return
bi1.add(bi2).intValue();
}
加法 java_java实现加法相关推荐
- 大整数加法java_JAVA 大整数加法的实现
/** * 整数加法 * * @param lv * 左值 * @param rv * 右值 * @param result * 相加的结果 * @数值存放说明 数值的每一位作为栈的一项存放在栈中,从 ...
- html中加法,javascript 实现加法运算详解
例子,javascript 实现加法运算. 复制代码 代码示例: javascript 实现加法运算 function calsum(){ var a=parseint(document.getele ...
- java分数的加法_分数加法
分数加法 时间限制 : 1sec / 空间限制: 256MB 题意: 给你2个分数,求他们的和,并要求和为最简形式. 输入: 一行,包含四个正整数a,b,c,d(0 输出: 输出两个整数e和f,用一个 ...
- c语言10以内得加法,10以内加法练习题(最新整理)
<10以内加法练习题(最新整理)>由会员分享,可在线阅读,更多相关<10以内加法练习题(最新整理)(48页珍藏版)>请在人人文库网上搜索. 1.0+0=1+5=9+0=1+0= ...
- 实数加法 小数高精度加法 c++ vector实现
题目地址: [Vjudge] https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1180 [计蒜客] 实数加法 - 题库 - 计蒜客 (j ...
- 矩阵 python 加法_Python矩阵加法
矩阵 python 加法 Here you will get program for python matrix addition. In python "list" concep ...
- PAT甲级1002 A+B for Polynomials:[C++题解]字符串、多项式加法或高精度加法
文章目录 题目分析 题目链接 题目分析 本题数据范围是1000 ,可以开一个数组 X [ ] ,X[i ]表示多项式中次幂是i的系数是多少. 因此,本题可以开两个数组,对应相加,然后输出非零项即可. ...
- python高精度加法_14.高精度加法
作者:X3B0A1 1.0 问题 在我们熟悉的数据类型中,能够储存的最大的数也只是longlong的范围. 虽然有些编译器也提供__int128类型,但是最多也只能表示40位左右的数,大小依然有限,而 ...
- python列表的加法_Python列表加法理解
我是Python新手,不能将函数转换为列表理解.理解涉及value函数,其包含类如下:class Card(object): # Lists containing valid candidates f ...
- 分数的加法,有理数加法
编写程序,计算两个有理数的和. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数. 输出格式: 在一行中按照a/b的格式输出两 ...
最新文章
- 找到一篇有关A*算法文章,不错~收藏
- 如何在VMware中安装Linux系统(带界面)~新手向
- Spring dataSource配置
- boost——windows下VS2013update5编译boost库
- 汽车编程都是用matlab,MATLAB编程与汽车仿真应用
- 通信技术专业技术人员考试 动力与环境_中级通信工程师动力与环境考试大纲...
- 电脑桌面透明云便签怎么设置便签皮肤透明度?
- 一个开源在线IDE项目
- dropbox 怎么使用_使用Dropbox API构建自己的Dropbox客户端
- 社区志愿者招募管理系统
- Mysql设计层优化整理总结
- Mac Spotlight搜索快捷键
- 大智能时代,未来人工智能发展新趋势
- 光年(Light Year Admin)后台管理系统模板
- 本质矩阵E的内在性质证明
- oracle会计软件技巧,财务软件输入凭证的五大技巧,太实用了!
- [整理]几个好的嵌入式linux学习网站和博客
- 以图搜图 相似图片搜索的原理(二)
- MyEclipse如何复制项目、无法修改web-context-root问题解决办法/ Repeated column in mapping for entity
- Pytorch教程入门系列4----Autograd自动求导机制
热门文章
- 服务器系统2008怎么安装net,如何在win2008R2 上安装.Net 3.5 sp1
- 高德地图添加导航依赖冲突 com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
- Unity_线性空间
- (RAID原理)JBOD
- 萌新扫盲4—交换机级联?还是堆叠?
- Android JetPack Room
- uni-app打包上架vivo应用市场踩坑
- office 2017 (或2007)如何在方框里打钩 或 插入可打钩的方框
- VLC_本地播放器(C#)
- xp用户未授予用户在此计算机,未授予用户在此计算机上的请求登录类型的解决方法 win7XP共享打印机完美解决教程...