JavaScript中递归

递归函数:递归函数是在通过名字调用自身的情况下构成的

这句话理解起来并不难,从概念上出发,给出以下的例子:

  1. function foo(){
  2. console.log("函数 foo 是递归函数。");
  3. foo();
  4. }

这个例子的 foo 函数就是一个递归函数。

当你把这个函数拿到浏览器上运行的时候,你会发现内存溢出了,为什么呢?因为这个递归函数没有停止处理或运算的出口,因此
这个递归函数就演变为一个死循环。

递归函数的作用和循环的效果一样
递归很容易发生“栈溢出”Stack overflow 错误,所以必须要添加退出条件

  1. var num = 1;
  2. function fn(){
  3. console.log('打印hello');
  4. if(num == 6){
  5. return;
  6. }
  7. num++;
  8. fn();
  9. }
  10. fn();

利用递归函数求1-n的阶乘12345…….n

  1. function fn(n){
  2. if(n== 1) {
  3. return 1;
  4. }
  5. return n * fn(n-1);
  6. }
  7. fn();
  8. //思路:假如用户输入3
  9. //return 3 * fn(2)
  10. //return 3 * fn(2 * fn(1))
  11. //return 3 * fn(2 * 1)
  12. //return 3 * 2
  13. //return 6

使用建议:在使用递归时,要注意对递归函数的参数类型的检查,一定要保证有一个终止处理或计算的出口。否则很容易演变为死循环,从而造成内存溢出。

九九乘法表

双层for循环实现方法:

  1. function nine (num) {
  2. for(var i = 1; i <= num; i++){
  3. var str = '';
  4. for(var k = 1; k <= num; k++){
  5. if(i >= k){
  6. str += k + 'x' + i + '=' + i*k + ' ';
  7. }
  8. }
  9. console.log(str)
  10. }
  11. }
  12. nine(9)

递归实现方法:

  1. function nine (num) {
  2. if(num == 1) {
  3. console.log('1x1=1')
  4. } else {
  5. nine(num - 1);
  6. for(var i = 1, str = ''; i <= num; i++){
  7. str += i + 'x' + num + '=' + i*num + ' '
  8. }
  9. console.log(str)
  10. }
  11. }
  12. nine(9)

只需要改下递归方法的位置,如下:

  1. function nine (num) {
  2. if(num == 1) {
  3. console.log('1x1=1')
  4. } else {
  5. for(var i = 1, str = ''; i <= num; i++){
  6. str += i + 'x' + num + '=' + i*num + ' '
  7. }
  8. console.log(str)
  9. nine(num - 1); // 更换下递归方法的位置
  10. }
  11. }
  12. nine(9)


每一次的记录,都是向前迈进的一步

更多相关文章

  1. js脚本基础
  2. 我们可以控制你看到的内容:主流IPTV远程代码执行漏洞分析
  3. CSS calc() 函数
  4. 作用域和闭包; 类与类的继承
  5. C 存储类
  6. Python的hasattr() getattr() setattr() 函数使用方法详解
  7. es6 javascript的class类中的 get和set
  8. Python2.x与3.x版本有哪些主要的区别?
  9. Python 函数(二)

随机推荐

  1. Android推荐资源
  2. Android 获取设备各种信息以及其它
  3. 自己定义的Tabhost
  4. 修改不启动Launcher导致开机广播无法发出
  5. Android wifi提示已连接但是无法访问网络
  6. Android 双开沙箱 VirtualApp 源码分析(二
  7. 在Android中,如何通过onTouchEvent实现Dou
  8. Android uiautomator 使用入门官方教程
  9. Android之一种很有趣的界面跳动提示动画
  10. android在java代码中绘制矩形框