pwstrick / daily

一份搜集的前端面试题目清单、面试相关以及各类学习的资料(不局限于前端)
2.39k stars 242 forks source link

用递增运算符(++)实现加减乘除运算 #996

Open pwstrick opened 4 years ago

pwstrick commented 4 years ago
/*
 ** 函数功能:用递增实现加法运算(限制条件:至少有一个非负数)
 ** 输入参数:a 和 b 都是整数,且有一个非负数
 */
function add(a, b) {
  if (a < 0 && b < 0) {
    return -1;
  }
  if (b >= 0) {
    for (var i = 0; i < b; i++) {
      a++;
    }
    return a;
  }
  for (i = 0; i < a; i++) {
    b++; 
  } 
  return b;
}
/*
 ** 函数功能:用递增实现减法运算(限制条件:被减数大于减数)
 ** 输入参数:a 和 b 都是整数且 a≥b
 */
function sub(a, b) {
  if (a < b) {
    return -1;
  } 
  for (var result = 0; b != a; b++, result++) {} 
  return result;
}
/* 
 ** 函数功能:用递增实现乘法运算(限制条件:两个数都为整数)
 ** 输入参数:a 和 b 都是正整数
 */
function multi(a, b) {
  if (a <= 0 || b <= 0) {
    return -1;
  }
  var result = 0;
  for (var i = 0; i < b; i++) {
    result = add(result, a);
  }
  return result;
}
/*
 ** 函数功能:用递增实现除法运算(限制条件:两个数都为整数)
 ** 输入参数:a 和 b 都是正整数
 */
function divid(a, b) {
  if (a <= 0 || b <= 0) {
    return -1;
  }
  var result = 1,
    tmpMulti = 0;
  while (1) {
    tmpMulti = multi(b, result);
    if (tmpMulti <= a) {
      result++;
    } else {
      break;
    }
  }
  return result - 1;
}