- 递归函数是在一个函数通过名字调用自身的情况下构成的。 
- 命名函数表达式在严格模式和非严格模式下都能用。命名函数表达式中的函数命名变量f只能在函数体内使用。 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26- 一般情况 
 function factorial(num){
 if(num<=1){
 return 1;
 }else{
 return num*factorial(num-1);
 }
 }
 使用arguments.callee,但不能用于严格模式
 function factorial(num){
 if(num<=1){
 return 1;
 }else{
 return num*arguments.callee(num-1);
 }
 }
 命名函数表达式(函数名理解为一个变量名,再按变量的复制理解)
 var factorial=(function f(num){
 if(num<=1){
 return 1;
 }else{
 return num*f(num-1);
 }
 })
- 另一个递归的经典例子——汉诺塔 - 1 
 2
 3
 4
 5
 6
 7- function hanori(n,src,aux,dst){ 
 if(n>0){
 hanori(n-1,src,dst,aux);
 console.log('Move '+n+' from '+src+' to '+dst);
 hanori(n-1,aux,src,dst);
 }
 }
《JavaScript高级程序设计》读书笔记7.1递归
 
    欢迎您扫一扫上面的微信二维码,订阅我的公众号!
- 本文链接: http://yoursite.com/2017/08/18/《JavaScript高级程序设计》读书笔记7-1递归/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!