递归的简要介绍和理解

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7
 8 <body>
 9 <script>
10     /*
11     * 递归
12     *   函数自己(内部)调用自己,递归
13     *
14     *   递归,本质上就是一个循环
15     * */
16
17 //    function fn1() {
18 //        fn1();
19 //    }
20 //    fn1();
21
22 //    function fn() {
23 //        setTimeout(function () {
24 //            console.log(1);
25 //            fn();
26 //        }, 100);
27 //    }
28 //    fn();
29
30 //    function fn1() {
31 //        console.log(1);
32 //        fn2();
33 //    }
34 //
35 //    function fn2() {
36 //        console.log(2);
37 //        fn1();
38 //    }
39 //
40 //    fn1();
41 </script>
42 </body>
43 </html>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>

<body>
<script>
/*
* 阶乘
* */

function factorial(n) {
if (n == 1) {
return 1;
}
return n * factorial(n-1);
}

/*
* 5 * factorial(4)
* 5 * 4 * factorial(3)
* 5 * 4 * 3 * factorial(2)
* 5 * 4 * 3 * 2 * factorial(1)
* 5 * 4 * 3 * 2 * 1
*
* 先调用的:factorial(5)
* 最后一次调用的:factorial(1)
*
* factorial(1)先执行完,factorial(5)是最后一次执行完成的
*
* 先进后出 -> FILO -> FirstInLastOut -> 栈
* 先进先出 -> FIFO -> FirstInFirstOut -> 队列
* */

console.log( factorial(5) );

</script>
</body>
</html>

时间: 2024-11-20 08:38:49

递归的简要介绍和理解的相关文章

0-Android编译系统简要介绍和学习计划

Android编译系统简要介绍和学习计划 来源:http://blog.csdn.net/luoshengyang/article/details/18466779 导语: 在Android源码环境中,我们开发好一个模块后,再写一个Android.mk文件,就可通过m/mm/mmm/make等命令进行编译.此外,通过make命令还可制作各种系统镜像文件,例如system.img.boot.img和recovery.img等.这一切都得益于Android编译系统,它为我们处理了各种依赖关系,以及提

Android运行时ART简要介绍和学习计划

Android在4.4就已推出新运行时ART,准备替代用了有些时日的Dalvik.不过当时尚属测试版,主角仍是Dalvik. 直到今年的Google I/O大会,ART才正式取代Dalvik.这个消息在科技界引起不小轰动,也吸引不少技术人员对它的"技术分析".可惜这些"技术分析"不过是引用了官方的数据和图表而已.这一系列文章将对ART进行真正的技术分析.老规矩,分析前先进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyang

html5 拖拽的简要介绍

1,首先,你要告诉计算机那个元素可以拖动,或者是一张图,或者是一个盒子,在标签里面加上 draggable="true"  2,然后,监听该元素被拖动的函数 ondragstart="drag(event)" 3,drag 里面告诉计算机是那个元素被拖动的 ev.dataTransfer.setData("Text",ev.target.id); 4,接下来将拖动的元素放到哪个盒子,(或者是经过那个盒子,经过某个盒子的时候触法 ondragove

Chromium网页渲染机制简要介绍和学习计划

作为一个浏览器,快速地将网页渲染出来是最重要的工作.Chromium为了做到这一点,费尽了心机,做了大量优化工作.这些优化工作是卓有成效的,代表了当今最先进的网页渲染技术.值得一提的是,这些渲染技术不仅适用于网页渲染,也可以应用在原生系统的UI渲染上.例如,在Android系统上,我们就可以看到两者在渲染技术上的相似之处.本文接下来就对Chromium的网页渲染机制进行简要介绍,并且制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! Chrom

Android应用程序UI硬件加速渲染技术简要介绍和学习计划

Android系统的流畅性一直被拿来与iOS比较,并且认为不如后者.这一方面与Android设备硬件质量参差不齐有关,另一方面也与Android系统的实现有关.例如在3.0前,Android应用程序UI绘制不支持硬件加速.不过从4.0开始,Android系统一直以"run fast, smooth, and responsively"为目标对UI进行优化.本文对这些优化进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

HTTP协议简要介绍

对于web开发而言,了解HTTP协议应当是比较基本的一个知识点了,最近又看了下相关的文章,特别是小坦克写的[HTTP协议详解],感觉受益颇丰,本着巩固知新的原则写了这篇文章,其中大量的引用了小坦克文章中的内容. HTTP协议是一个应用层的协议,主要用于web程序间的相互通信,具有简捷.快速的特点,我们现在使用的协议版本为HTTP/1.1. 主要特点的概括: 1.支持客户/服务器模式. 2.简单快速:客户向服务器发送请求时,只需要发送请求的方法(GET.POST.HEAD等)和路径,由于协议简单,

Chromium网页输入事件处理机制简要介绍和学习计划

用户在浏览网页的时候,需要与网页进行交互,常用的操作如滑动.捏合网页,以及点击网页中的链接等.这些交互操作也称为用户输入事件,浏览器需要对它们作出迅速的响应,例如及时更新网页内容或者打开新的网页等.浏览器能够对用户输入事件作出迅速的响应是至关重要的,因为这关乎到用户浏览网页时的体验,尤其是在用户滑动和捏合网页时.本文接下来就简要介绍Chromium对用户输入事件的处理机制,以及制定后续的学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 在任何一个

电镀的定义、分类、工艺过程、设计要求等简要介绍

1.电镀的定义和分类1-1.电镀的定义随着工业化生产的不断细分,新工艺新材料的不断涌现,在实际产品中得到应用的设计效果也日新月异,电镀是我们在设计中经常要涉及到的一种工艺,而电镀效果是我们使用时间较长,工艺也较为成熟的一种效果,对于这种工艺的应用在我们的产品上已经非常多,我们希望通过总结我们已有的经验作一些设计的参考性文件,可以更好的将电镀效果应用在我们的设计上,也更合理的应用在我们的设计上,可以为以后的工作带来一些方便.通过这种工艺的处理我们通常可以得到一些金属色泽的效果,如高光,亚光等,搭配

Chromium多进程架构简要介绍和学习计划

Chromium以多进程架构著称,它主要包含四类进程,分别是Browser进程.Render进程.GPU进程和Plugin进程.之所以要将Render进程.GPU进程和Plugin进程独立出来,是为了解决它们的不稳定性问题.也就是说,Render进程.GPU进程和Plugin进程由于不稳定而引发的Crash不会导致整个浏览器崩溃.本文就对Chromium的多进程架构进行简要介绍,以及制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 一个Chr