欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2020-11-22

程序员文章站 2022-06-03 12:09:14
...

什么是递归?(Javescrip)

我自己总结了一下三点

  1. 函数自己调用自己
  2. 一般情况下有参数
  3. 一般情况下有return值

递归可以解决什么
【注】递归可以解决循环解决的一切事情,也可以解决循环不易解决的事情。
【注】递归都可以无压力的写出来,但是你不知道为什么是对的。很神奇哦!

根据这个小例子,来认识递归
//求1~n的和

怎么写递归呢,我总结了以下三点。
	// 1.找到一个临界值  
		//什么是临界值:就是不用计算,就可以得到的值,或者口算可以得到的值,就是临界值
    // 2.找这一次和上一次的规律 
     	//sum(100) = sum(99) + sum(100)
   		//sum(n) = sum(n - 1) + sum(n)
    // 3.假设这个函数已经可以用了,调用自己计算一次。
    function sum(n) {
        if (n == 1) {//这就是临界值
            return 1;
        }
        return sum(n - 1) + n;
    }

    alert(sum(100));

为什么递归在公司明文禁止使用?(垃圾回收机制)

  1. 先开一个空间,计算sum100的值,但是不知到sun100是多少,所以要再开一个空间计算sum99的值~~~一直开到sum2,sum1。这时候知道了sum1的值,然后就一个一个释放空间,释放sum1的空间,sum2的空间,然后直到释放sum100的空间,跳出循环。(如下图示)
  2. 但是计算机计算速度很快,一开始递归会瞬间开出100个空间来储存,后面会瞬间释放,程序就会蓝屏或者死机。这是很危险的,所以明文禁止使用递归。但是也不排除会有少部分使用。

2020-11-22

创作不易
转载请标明出处。