Loading...
墨滴

2021/04/22  阅读:39  主题:默认主题

算法1

每天一个小算法

如何计算 n * n = ? 例如(4*5=20),不使用乘法计算出来

求解过程:

不能使用乘法?那么4*5就等于 5个4相加或者4个5相加。 那么思路有了,接下来我们用两种解题方法解决这个问题。

第一种方法(最日常使用)
function f(a,b){
  //定义一个初始的累加值
  var sum = 0;
  //任何一项为零结果返回0
  if(a==0 || b == 0 ) return 0;
  //这里做判断有同学有疑问,
  //这里是一个优化,小值可减少循环次数
  if(a > b){    
    for(var i = 0; i< b; i++){
      sum+=a
    }
  }
  else{
    for(var i = 0; i< a; i++){
       sum+=b
    }
  }
  return sum
}
f(6,5)   //30
第二种方法(递归)
function f(a,b){
  //在里面创建创建一个函数,r 为累加值,每次递归最小值-1,大值与累加值相加,知道return 返回结果
  const sum = function(a,b,r){
    if(a == 0 || b == 0)return r;
    return a < b? sum(a-1, b, r+b) : sum(a, b-1, r+a);

  }
  return sum(a,b,0)
}

2021/04/22  阅读:39  主题:默认主题

作者介绍