<!DOCTYPE html>
<html>
<head>
<title>对递归的深入理解的解析</title>
</head>
<body>
<script type="text/javascript">
//,杨亚坤,2018年3月5 上午4点, 测试demo1,demo2,demo3
// 当一个函数被递归调用的时候,在递归没有完成之前,函数的计算结果暂时被挂起,()
//函数的计算结果暂时被挂起??
// 递归?名词解释, 依次回归,从最后一个数字开始,依次结束挂起状态
// 测试 demo1 简单的递归 说明,以及演示函数 递归的过程
function calcfun(n){
if(n == 1){
return n ;
}else{
return n * calcfun(n-1);
}
}
var a = calcfun(3);
console.log(a);
// 过程
// 第1次 return 3 * calcfun(2); 结果全面展示为 return 3 * calcfun(2);
// 第2次 return 2 * calcfun(1); 结果全面展示为 return 3 * (return 2 * calcfun(1);)
// 第3次 return 1 结果全面展示为 return 3 * (return 2 * (return 1))
// 倒着结束挂起状态
// return 3 * (return 2 *1));
//结果全面展示为 return 3 * (2 )
//结果全面展示为 return 6;
// demo 2 利用递归快速苏排序;
var arr=[3,4,1,2,5];
function fun(arr) {
if(arr.length<=1){return arr;};
var pivot = arr[0];
var big=[];
var small=[];
var result = [];
//从下表为1的项目(第二个数字)开始 循环
for(var i=1;i<arr.length;i++){
if(arr[i]<=pivot){
small.push(arr[i]);
}
else{
big.push(arr[i]);
}
}
return result = fun(small).concat(pivot,big);
}
var b = fun(arr);
console.log(b);
// demo3 斐波那契数列 1,1,2,3,5,8,13,21,34
// 求 数列的 第三个数字是几
function fibo(n) {
if(n==1 || n==2){return 1}else{
return fibo(n-1)+fibo(n-2);
}
}
var c = fibo(8);
console.log(c);
</script>
</body>
</html>
<html>
<head>
<title>对递归的深入理解的解析</title>
</head>
<body>
<script type="text/javascript">
//,杨亚坤,2018年3月5 上午4点, 测试demo1,demo2,demo3
// 当一个函数被递归调用的时候,在递归没有完成之前,函数的计算结果暂时被挂起,()
//函数的计算结果暂时被挂起??
// 递归?名词解释, 依次回归,从最后一个数字开始,依次结束挂起状态
// 测试 demo1 简单的递归 说明,以及演示函数 递归的过程
function calcfun(n){
if(n == 1){
return n ;
}else{
return n * calcfun(n-1);
}
}
var a = calcfun(3);
console.log(a);
// 过程
// 第1次 return 3 * calcfun(2); 结果全面展示为 return 3 * calcfun(2);
// 第2次 return 2 * calcfun(1); 结果全面展示为 return 3 * (return 2 * calcfun(1);)
// 第3次 return 1 结果全面展示为 return 3 * (return 2 * (return 1))
// 倒着结束挂起状态
// return 3 * (return 2 *1));
//结果全面展示为 return 3 * (2 )
//结果全面展示为 return 6;
// demo 2 利用递归快速苏排序;
var arr=[3,4,1,2,5];
function fun(arr) {
if(arr.length<=1){return arr;};
var pivot = arr[0];
var big=[];
var small=[];
var result = [];
//从下表为1的项目(第二个数字)开始 循环
for(var i=1;i<arr.length;i++){
if(arr[i]<=pivot){
small.push(arr[i]);
}
else{
big.push(arr[i]);
}
}
return result = fun(small).concat(pivot,big);
}
var b = fun(arr);
console.log(b);
// demo3 斐波那契数列 1,1,2,3,5,8,13,21,34
// 求 数列的 第三个数字是几
function fibo(n) {
if(n==1 || n==2){return 1}else{
return fibo(n-1)+fibo(n-2);
}
}
var c = fibo(8);
console.log(c);
</script>
</body>
</html>