楊輝三角js算法
上個星期,小熙有幸去藝龍網面試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算法