一般情况下,仅从代码上看只要不出现死循环,是不会出现堆栈调用溢出的.但是某些情况下列外,比如下面这段代码: var a = 99; function b (){ a --; if (a > 0){ b(); } else { console.info(a); } } b(); => 0 这并不是死循环,当变量 a逐渐减少到0时,递归就终止了.乍一看是不会出现任何问题的,但是如果我们把 a增加到一个较大的数值,就会出现问题: 如图所示,一个范围错误的异常抛了出来,我们被告知"超过了最大
递归函数 2578次阅读 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n 所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理. 于是,fact(n)用递归的方式写出来就是:
函数调用自身 求1-100的和 var sum = 0; for(var i = 1; i<=100; i++){ sum += i } console.log(sum) //自己写的递归 var sum = 0;var i = 1;function fn(){ sum += i; if(i==100){ return sum; } i++; fn(); //arguments.callee(); 指向函数本身}fn();
for /r %%i in (*.js) do type "%%i">>xxx-all.js java -jar yuicompressor.jar --type js --charset utf- -o xxx-min.js xxx-all.js 第一句意思是合并当前目录和子目录的全部js文件,输出为xxx-all.js 第二句结合yuicompressor,把js最小化
/*动态加载菜单*/ function dynamicMenu(data){ if (userID != "admin"){ //1.清空所有菜单 $("#menuList").empty(); //2.添加用户配置菜单 递归生成 var rootArr = new Array(); $.each( data, function(index, content) { var id = content.id; var name = content.name; var o
例题1:公园里有200个桃子,猴子每天吃掉一半以后扔掉一个,问6天以后还剩余多少桃子? var sum = 200; for(var i= 0;i<6;i++) { sum = parseInt(sum/2)-1 } alert(sum); 例题2:公园里有一些桃子,猴子每天吃掉一半以后扔掉一个,第6天的时候发现还剩下1个桃子,问开始有几个桃子? var sum = 1; for(var i = 0;i<6;i++) { sum = (sum+1)*2; } alert(sum); 使用函数解