递归-基础知识总结------彭记(06)
递归
-在程序中,递归就是函数自己直接或者间接调用自己。
-就递归而言最重要的就是跳出结构,因为跳出了才可以有结果。
化归思想:
-将一个问题由难化易,由繁化简 ,由复杂化简单的过程称为化归,它是转化和归结的简称。
-递归思想就是将一个问题转换为一个已解决的问题来实现
-假如有一个函数'f',如果它是递归函数的话,那么也就是说函数体内的问题还是转换为'f'的形式。
例如:求1~100的和?
function foo(n){
return n +foo(n-1);
}
上面就是利用了化归思想:
-将求100 转换为求99
-将求99转换为求98
......
-将求2 转换为求1
-求1结果就是1
function foo(n){
if(n==1){
return 1;
}
return n+foo(n-1);
}
递归实现汉诺塔
<script> var index =1; /*每一次移动只能移动一个元素,将这个编号的元素从from和位置移动到to的位置*/ function move(n,from,to){ console.log('第' + (index++) + '次,将第' + n + '个元素从' + from + '位置移动到' + to + '位置'); } /*将指定数量的元素从from位置,通过temp空位移动到to位置*/ function hanNouTa(n,from,temp,to){ if(n == 0){ return; } /*先将上面的其它元素全部移到到空位上*/ hanNouTa(n-1,from,to,temp); /*将最后一元素移动到指定的目标位置上*/ move(n,from,to); /*通过空位将刚才的n-1个元素移动到目标位置上*/ hanNouTa(n-1,temp,from,to); } hanNouTa(4,'A','B','C'); </script>