递归

一、递归

主要用代码解释

1.定义:递归函数就是在函数体内调用本函数。

2.注意:递归函数的使用要注意函数终止条件避免死循环。

比如以下的代码:

function f1(){
	console.log(a);
	f1()
}
f1()  //  这么写的话会一直输出a,不会停

count=0
function f1(){
	count++
	console.log(count);
	f1()
}
f1()  //  这么写的话,会从1开始每次加一,一直加到不能加位置,不然的话不会停

那么这时候加一个条件的话,会按照条件里的来运行输出

var count=0
function f1() {
	// 有一个判断条件到100时就会停止
	if(count==100){
    	return
    }
    count++
    console.log(count);
    f1()
}
f1()  //  从1输出到100  停止

以上案例就是递归基本函数,要有一个停止条件

案例详细解释运算过程

案例1:

var sum = 0
var a = 0
function f1() {
	if (a == 4) {
		return 4
	}
    a++
    return a + f1()
}
var result = f1()
console.log(result);  //  14

// a=0,a不等于4,为false,a++之后a=1,1+f1()执行函数f1()
// a=1,a不等于4,为false,a++之后a=2,2+f1()执行函数f1()
// a=2,a不等于4,为false,a++之后a=3,3+f1()执行函数f1()
// a=3,a不等于4,为false,a++之后a=4,4+f1()执行函数f1()
// a=4,if判断为true,return 4,输出4,这里的return a + f1()就是return 4+4=8,将执行结果返回上一级,a=3的时候
// 上一级中return a+f1()=return 3+f1()中的f1()就是8,这里a=3,所以返回11,再返回给上一级,a=2的时候
// 上一级中return a+f1()=return 2+f1()中的f1()就是11,这里a=2,所以返回13,再返回给上一级,a=1的时候
// 上一级中return a+f1()=return 1+f1()中的f1()就是13,这里a=1,所以返回14,这里就要输出最后的结果,递归已经完成

案例2:计算1-5的阶乘:1 * 2 * 3 * 4 * 5

function fn(n) {
	// 递归结束条件
	if (n == 1) {
		return 1
    }
    return n * fn(n - 1)
}
var result = fn(5)
console.log(result);  // 120

// n=5,不等于1,为false,返回return 5*fn(4),再次执行函数fn()
// n=4,不等于1,为false,返回return 4*fn(3),再次执行函数fn()
// n=3,n=4同理
// n=1,不等于1,为false,返回return 1,就等于fn(1)
// 得知fn(1)=1,所以n=2的时候,return 2*fn(1)=fn(2)=2
// 得知fn(2)=2,所以n=3的时候,return 3*fn(2)=fn(3)=6
// fn(3),fn(4),fn(5)同理,最后输出结果为120

案例3:计算1+2+3+4+5+…+n的和

function fn(n) {
	if (n == 1) {
		return 1;
	}
	return n + fn(n - 1);
}
console.log(fn(10));  // 55

// 计算意思和1-5的阶乘一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值