1. 程式人生 > >楊輝三角js算法

楊輝三角js算法

fault ret 一個 藝龍網 出了 多少 職位 自己 -1

上個星期,小熙有幸去藝龍網面試web前端開發職位,技術經理在面試中,給小熙出了一道數學題。學名楊輝三角。用函數計算出第n行,第m個數值是多少。直接看效果吧

技術分享

讓我用函數算出,第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

事實證明,只要經過自己的努力,還是可以做出來滴。。。嘻嘻。分享出來,希望對大家有所幫助。

楊輝三角js算法