JS计算两个数字之和算法
来源:互联网 发布:mysql 主键id 清空 编辑:程序博客网 时间:2024/06/07 14:37
问题:计算两个数字的和?
分析:众所周知,Number类型的值有个上限,如果是两个极大的数字相加求和,便不能使用最简单的+方法,可以将两个数字当成字符串去处理,从最末尾开始相加,注意递进的位数,最后得到相加的字符串
实现:
//参数a、b均为字符串正整数,求和function add(a, b){var aLen = a.length,bLen = b.length,maxLen = aLen - bLen >= 0 ? aLen : bLen,num = 0,//向上位数递级str = '';for(var i = 1; i <= maxLen; i++){var aVal = aLen - i >= 0 ? parseInt(a.charAt(aLen - i)) : 0,bVal = bLen - i >= 0 ? parseInt(b.charAt(bLen - i)) : 0,bitVal = 0,addVal = aVal + bVal + num;if(addVal >= 10){num = parseInt(addVal / 10);bitVal = addVal % 10;}else{num = 0;bitVal = addVal;}str += bitVal;}return Array.prototype.reduceRight.call(str, function(a, b){return a + b;});}第二种方式,递归算法
function add(a, b){var aArr = a.split('').reverse(),bArr = b.split('').reverse();return (function addStep(aArr, bArr, str, num){var aVal = aArr.length === 0 ? 0 : parseInt(aArr.shift()),bVal = bArr.length === 0 ? 0 : parseInt(bArr.shift()),num = num || 0,bitVal = 0,addVal = aVal + bVal + num,str = str || '';if(addVal >= 10){num = parseInt(addVal / 10);bitVal = addVal % 10;}else{num = 0;bitVal = addVal;}str += bitVal;if(aArr.length === 0 && bArr.length === 0){console.log(Array.prototype.reduceRight.call(str, function(a, b){return a + b;}));}else{addStep(aArr, bArr, str, num);}})(aArr, bArr, '', 0)}
阅读全文
0 0
- JS计算两个数字之和算法
- jQuery计算两个文本框中数字之和
- 计算数字之和
- JS:计算数组两个值之间所有整数之和
- 通过JS计算两个数字值
- 两个数字之和等于sum
- 计算两个复数之和、差
- 计算两个复数之和、差
- 计算两个复数之和、差.
- 计算两个整数相加之和
- 给你两个数 a 和 b , 请你计算 a b 之间所有数的数字之和
- 415. Add Strings (计算由两个字符串表示的数字相加之和)
- js分别计算一个字符串“12345F6”中的奇数位和偶数位的数字之和
- 一个比较字符串和一个计算N个数字阶乘之和的算法
- LeetCode TwoSum 找到两个数字之和
- 求两个数字之和(c++)
- 牛客网刷题之和为S的两个数字
- offer411--两个数字之和为s
- Javascript性能优化阅读笔记
- 第一次写自己的技术博客之写在开头
- Xposed修改硬件信息总结
- Path Sum
- 加载驱动程序的方法
- JS计算两个数字之和算法
- iOS 使用GPUImage录制实时视频第一帧黑屏的解决办法
- RN版本无限轮播的使用(Banner)
- 【转】Redis设计思路学习与总结
- code[vs] 1206 保留两位小数
- edit distance问题 leetcode72
- 游戏常见作弊方式及应对策略
- 常见的js基础算法
- Jmeter JDBC使用指南