当前位置:首页 > 编程教程 > javascript技术文章 > javascript中递归函数用法注意点

介绍javascript中递归函数的小注意

  • 发布时间:
  • 作者:码农之家
  • 点击:93

这篇文章主要知识点是关于javascript、递归函数、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

你不知道的JavaScript 下卷
  • 类型:JavaScript大小:7 MB格式:PDF作者:凯尔
立即下载

javascript中递归函数用法注意点

不做详细文字说明了,直接写代码,很明了。

<script>
 function sum(num){
 if(num<=1){
return 1;
}else{
return num*sum(num-1);
//return num*arguments.callee(num-1); //指针
//return 2;
}
}
var sum1=sum;
 alert(sum1(2));
</script>

上面的代码 在执行时很容易出现问题,执行我们介绍一个方法,arguments.callee,是一个指向正在执行的函数的指针,使用指针代替函数名使得执行以上代码时不容易出错!

以上代码就是javascript中递归函数用法注意点,希望对大家有所帮助。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

javascript 相关电子书
学习笔记
网友NO.944397

JavaScript递归函数解“汉诺塔”算法代码解析

“汉诺塔”是一个著名的益智游戏。塔上有3根柱子和一套直径各不相同的空心圆盘。开始时柱子上的所有圆盘都按照从小到大的顺序堆叠。目标是通过每次移动一个圆盘到另一根柱子,最终把一堆圆盘移动到目标柱子上,过程中不允许把交大的圆盘放置在较小的圆盘之上。 仔细解读这段话,如果有10个圆盘甚至更多,那操作步骤绝对多到让人震惊,但目标是把一堆圆盘移动到目标柱子上,如果把上面的9个圆盘看成一套,第10个圆盘看成另一套,先移动9个圆盘到另一根柱子上,再把上面8个圆盘看成一套,第9个圆盘看成另一套……依次类推,分解移动,递归函数的思想就体现出来了。 完成代码,非常简单的写法,不知道还有没有更简单的写法? var hanoi = function {disc, begin, end, helper) { if (disc 0) { hanoi(disc - 1, begin, helper, end); document.writeln('移动圆盘 ' + dis……

网友NO.723076

JavaScript递归函数定义与用法实例分析

本文实例讲述了JavaScript递归函数定义与用法。分享给大家供大家参考,具体如下: 递归函数是一个函数通过名字调用自身的情况下形成的,比如经典的递归阶乘函数: function factorial(num) { if (num = 1) { return 1; } else { return num * factorial(num - 1); }} 上面的这种写法,可能会造成问题: var anotherFactorial = factorial;factorial = null;console.log(anotherFactorial(4));//出错 因为 factorial 函数定义内部使用了自身的函数名,所以当 factorial 被置为 null 后,factorial 已不是函数,自然报错啦 O(∩_∩)O~。 可以使用 arguments.callee 指向正在执行的函数的指针来避免上面出现的问题: function factorial(num) { if (num = 1) { return 1; } else { return num * arguments.callee(num - 1); }}var anotherFactorial = factorial;factorial = null;console.log(anotherFactorial(4)); 运行结果:24 但在严格模式下,不能访问 arguments.callee ,但可以使用命……

网友NO.540017

JavaScript正则表达式校验与递归函数实际应用实例解析

JS递归函数(菲波那切数列) 实例解析: 一组数字:0 1 1 2 3 5 8 13 0 1 2 3 4 5 6 7 sl(0)=0; sl(1)=1; sl(2)=sl(0)+sl(1); sl(3)=sl(1)+sl(2); function sl(i){ if(i==0){ return 0;}else if(i==1){ return 1;}else{ return sl(i-1)+sl(i-2);}} 正则表达式检验 //校验是否全由数字组成function isDigit(s){var patrn=/^[0-9]{1,20}$/;if (!patrn.exec(s)) return falsereturn true}//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串function isRegisterUserName(s){var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;if (!patrn.exec(s)) return falsereturn true}//校验用户姓名:只能输入1-30个以字母开头的字串function isTrueName(s){var patrn=/^[a-zA-Z]{1,30}$/;if (!patrn.exec(s)) return falsereturn true}//校验密码:只能输入6-20个字母、数字、下划线function isPasswd(s){var patrn=/^(\w){6,20}$/;if (!patrn.exec(s)) return falsereturn true}//校验普通电话、传真号码:可以“+”开头,除数字外……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com