题目描述

求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实现加法相关推荐

  1. 大整数加法java_JAVA 大整数加法的实现

    /** * 整数加法 * * @param lv * 左值 * @param rv * 右值 * @param result * 相加的结果 * @数值存放说明 数值的每一位作为栈的一项存放在栈中,从 ...

  2. html中加法,javascript 实现加法运算详解

    例子,javascript 实现加法运算. 复制代码 代码示例: javascript 实现加法运算 function calsum(){ var a=parseint(document.getele ...

  3. java分数的加法_分数加法

    分数加法 时间限制 : 1sec / 空间限制: 256MB 题意: 给你2个分数,求他们的和,并要求和为最简形式. 输入: 一行,包含四个正整数a,b,c,d(0 输出: 输出两个整数e和f,用一个 ...

  4. c语言10以内得加法,10以内加法练习题(最新整理)

    <10以内加法练习题(最新整理)>由会员分享,可在线阅读,更多相关<10以内加法练习题(最新整理)(48页珍藏版)>请在人人文库网上搜索. 1.0+0=1+5=9+0=1+0= ...

  5. 实数加法 小数高精度加法 c++ vector实现

    题目地址: [Vjudge] https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-T1180 [计蒜客] 实数加法 - 题库 - 计蒜客 (j ...

  6. 矩阵 python 加法_Python矩阵加法

    矩阵 python 加法 Here you will get program for python matrix addition. In python "list" concep ...

  7. PAT甲级1002 A+B for Polynomials:[C++题解]字符串、多项式加法或高精度加法

    文章目录 题目分析 题目链接 题目分析 本题数据范围是1000 ,可以开一个数组 X [ ] ,X[i ]表示多项式中次幂是i的系数是多少. 因此,本题可以开两个数组,对应相加,然后输出非零项即可. ...

  8. python高精度加法_14.高精度加法

    作者:X3B0A1 1.0 问题 在我们熟悉的数据类型中,能够储存的最大的数也只是longlong的范围. 虽然有些编译器也提供__int128类型,但是最多也只能表示40位左右的数,大小依然有限,而 ...

  9. python列表的加法_Python列表加法理解

    我是Python新手,不能将函数转换为列表理解.理解涉及value函数,其包含类如下:class Card(object): # Lists containing valid candidates f ...

  10. 分数的加法,有理数加法

    编写程序,计算两个有理数的和. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数. 输出格式: 在一行中按照a/b的格式输出两 ...

最新文章

  1. 找到一篇有关A*算法文章,不错~收藏
  2. 如何在VMware中安装Linux系统(带界面)~新手向
  3. Spring dataSource配置
  4. boost——windows下VS2013update5编译boost库
  5. 汽车编程都是用matlab,MATLAB编程与汽车仿真应用
  6. 通信技术专业技术人员考试 动力与环境_中级通信工程师动力与环境考试大纲...
  7. 电脑桌面透明云便签怎么设置便签皮肤透明度?
  8. 一个开源在线IDE项目
  9. dropbox 怎么使用_使用Dropbox API构建自己的Dropbox客户端
  10. 社区志愿者招募管理系统
  11. Mysql设计层优化整理总结
  12. Mac Spotlight搜索快捷键
  13. 大智能时代,未来人工智能发展新趋势
  14. 光年(Light Year Admin)后台管理系统模板
  15. 本质矩阵E的内在性质证明
  16. oracle会计软件技巧,财务软件输入凭证的五大技巧,太实用了!
  17. [整理]几个好的嵌入式linux学习网站和博客
  18. 以图搜图 相似图片搜索的原理(二)
  19. MyEclipse如何复制项目、无法修改web-context-root问题解决办法/ Repeated column in mapping for entity
  20. Pytorch教程入门系列4----Autograd自动求导机制

热门文章

  1. 服务器系统2008怎么安装net,如何在win2008R2 上安装.Net 3.5 sp1
  2. 高德地图添加导航依赖冲突 com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
  3. Unity_线性空间
  4. (RAID原理)JBOD
  5. 萌新扫盲4—交换机级联?还是堆叠?
  6. Android JetPack Room
  7. uni-app打包上架vivo应用市场踩坑
  8. office 2017 (或2007)如何在方框里打钩 或 插入可打钩的方框
  9. VLC_本地播放器(C#)
  10. xp用户未授予用户在此计算机,未授予用户在此计算机上的请求登录类型的解决方法 win7XP共享打印机完美解决教程...