上个星期,小熙有幸去艺龙网面试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
事实证明,只要经过自己的努力,还是可以做出来滴。。。嘻嘻。分享出来,希望对大家有所帮助。