n*recurrence(n-1)

前几天被问到一道很简单的阶乘的题目,自己脑抽了一下,居然算少了20....起身走出门口,自己的思维才活过来,都不想说自己多傻了...


先看看题目

function recurrence(n){
  if(n==1){
    return n
  }else{
    return n*recurrence(n-1);
  }
};
alert(recurrence(5));

我当时写的很起劲,大脑短路,居然脑子里像打了断点一样去运行每一步计算,然后写了个100上去......

结果是120....

起身走出去,我才想起来,就是一道简单的阶乘,已经泪目....


1.那就来打个断点吧
(1)5x(5-1)=20
(2)20x(4-1)=60
(3)60x(3-1)=120
(4)120x(2-1)=120
(5)return 120

2.简化公式
5x(5-1)x(4-1)x(3-1)x(2-1)=120

你可能感兴趣的:(n*recurrence(n-1))