杨辉三角js算法

时间:2022-03-13 12:20:45

上个星期,小熙有幸去艺龙网面试web前端开发职位,技术经理在面试中,给小熙出了一道数学题。学名杨辉三角。用函数计算出第n行,第m个数值是多少。直接看效果吧

杨辉三角js算法

 

让我用函数算出,第n行,第m个数字是什么。作为理科生的小熙,虽然脑子也灵光,可是。这么久不做数学题,况且还是用函数做出来,当时脑瓜一翁,完蛋了啦,game over了。不会。。。 回来后,我找到难点,其实,最大的难点在于,我不会递归。这一直是我的一个痛点。呵呵了。。。于是,先了解,递归,,我总感觉,自己经常淹没的递归里,无法脱身。。。用早就忘记数学的脑子,终于把递归想通了,,于是,用两种方法来实现面试效果:

// 方法1
function findNum(n,m){
  if(m>n){
    return false;
  }
  if(m==1 || m==n){
    return 1;
  }
  if(m==2 || m==n-1){
    return n-1;
  }
  return findNum(n-1,m) + findNum(n-1,m-1);
}
console.log(findNum(7,5))   //15

// 方法2
function countNum(n,m){
  if(m>n) return false;
  switch(m) {
    case 1 :
    case n :
      return 1;
    case 2:
    case n-1:
      return n-1;
    default:
      return countNum(n-1,m) + countNum(n-1,m-1);
  }
}
console.log(countNum(7,5))   //15

事实证明,只要经过自己的努力,还是可以做出来滴。。。嘻嘻。分享出来,希望对大家有所帮助。