递归

很多初学者都对递归有很大的迷惑,甚有自己身边的同事对递归多多少少也有一些不解,下面的内容仅代表个人对递归做一些说明理解,仅供参考

1.递归

语法:函数内部自己调用自己
函数调用自己要有结束的时候,不然一直调用内存溢出没有意义

1.1直接形成递归

function test(){
	console.log('我是test函数');
	test();
}

1.2间接的形成递归

function test1(){
	console.log('我是test1函数');
	test2();
}

function test2(){
	console.log('我是test2()函数');
	test1();
}
test1();
/
递归要有结束的时候
var i =0;
function test(){
	console.log('哈哈');
	i++;
	if(i<3){
	test();
}
test();
2.递归的执行过程

2.1 函数的调用过程
调用函数一定是会去执行他的函数体的

function test1(){
	console.log('哈哈');
	console.log('嘻嘻');
	test2();
	console.log('嘿嘿');
	console.log('呵呵');
}

function test2(){
	console.log('我是test2+哈哈哈哈');
	console.log('我是test2+喜喜喜喜');
}

test1();

输出结果:
哈哈
嘻嘻
我是test2+哈哈哈哈
我是test2+喜喜喜喜
嘿嘿
呵呵

2.2

var i=0;
function test(){
	i++;
	console.log('哈哈'+i);
	if(i<3){
		test();
	}
	console.log('呵呵’+i);
}
test();
输出结果:
哈哈1
哈哈2
哈哈3
呵呵3
呵呵3
呵呵3

为了帮助理解,简单的画了一个图
在这里插入图片描述

3.比较经典的几个案例

3.1. 利用递归求1-n之间的整数累加和

function getSum(n){
	if(n == 1){
		return 1;
	}
	return getSum(n-1) +n;
}

//类似求整数n的阶乘

3.2 利用递归求斐波那契数列中的第n项

/*1 1 2 3 5 8 13 21 34 55....*/
function getFB(n){
	if(n == 1 || n == 2){
		return 1;
	}
	return getFB(n-2)+getFB(n-1);
}
/*使用此方法求递归,会涉及到性能低下的问题?
*1.因为调用这个函数太多次了,调用函数是消耗时间的
*2.因为求了很多重复的项
*/
//关于如何解决这个问题,我会在后面的文章中做一个说明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️不倒翁

你的鼓励就是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值