1. 函数内调用别的函数;
//求两个数中的最大值;
function getMax(a,b){
return a > b ? a : b; //申明一个比较两个数大小函数,返回值为较大的那个;相当于if(a>b){return a} else{ return b};}
//求三个数中的最大值
function getMax1(a,b,c){ //申明一个 比较三个数大小的函数;
var max = getMax(a,b); // 这里可以挑用上面那个函数求出两个数中叫大得那个数, 然后申明一个max变量保存;
return max > c ? max :c; // 再用 较大的那个数同第三个数比较,原理同上;
}
alert(getMax(15,13,10)); // 这个函数调用比较简单,下面的递归可能有点绕;
2函数内调用自身函数(递归);
// 求1!+2!+3!+....+n!
// 我们分析这个题其实就是求阶乘 1*1 + 2*1 + 3*2*1 + 4*3*2*1 + 5*4*3*2*1...*n
function calc(n){
if( n > 0){ // 当参数n传进来时,如果不对n做判断,会一直执行。
return calc(n-1) * n; // 返回 n * n-1; 然后函数clac 又接收 n-1这个参数 继续向下乘; 举个例子,假如n传进来的是3;第一次调用函数calc时;返回3*2
// 然后函数calc 会把2 作为参数继续调用;返回2*1; 然后1作为参数传到cala里1-1=0不满足下一次执行条件返回1;
}
return 1; 这里返回1 是为了防止 函数条件不满足时;会返回undefine (函数没有返回值的话,会默认返回undefine),最后会乘出一个NaN出来。
}
alert( calc(10));