什么是递归??看完这篇就懂了!!

**函数递归:**如果面试官去问你关于递归的知识,说明面试官对你的要求很高!
但是去公司的话呢,公司是明文禁止使用递归。
可能这两句话听起来有些矛盾,但是跟着小编往下看,我们一起剖析一下这个神秘的函数递归到底是什么

什么是递归?

	递归:
		满足以下三种特点就是递归:
			1.函数自己调用自己
			2.一般情况下有参数
			3.一般情况下有return

【注】递归可以用来解决循环能解决的事情,有一些循环不太容易解决的事,递归也能轻松解决。

			循环和递归
			递归:易于理解、速度慢、存储空间大
			循环:不易理解、速度快、存储空间小

举个栗子:
在这里插入图片描述
首先去找临界值,临界值就是不用计算得到的值。先封装函数 求1到n的和,当n等于1的时候,求1到1之间的和是1,当n等于2求1到2之间的和是 3, 这就是临界值。其次我们去找规律,我们去找1到99的和1到100的和之间的区别,我们会发现1到100的和等于1到99的和加上100。把100替换成n就是 sum = sum(n-1)+ n;运行结果就是5050。

在这里插入图片描述
这道题通过内存分析还是可以分析出来的,首先我们在调用函数的时候,内存会分配一段空间去执行,直到被执行结束以后,可以把这段空间释放掉。 我们现在内存里分配一段空间,这个空间是sum100的,n的值等于100,很明显不符合if语句的判断,所以去执行 sum(100-1)+n;就是sum99+100;但是这个sum99不知道,就要去再分配一段空间去计算sum99的值,sum99还是不满足if的条件,所以就要去执行sum (99-1)+99;就是sum98+99;所以又要分配一段空间去计算sum’98的值,而且我们上面sum99的空间不能释放,因为还没算出来,直到算到sum1,当n等于1的时候,他的临界值就是1,sum1的结果就是1,sum2的结果就是sum1+2;sum3的结果就是sum2+3;以此类推,最后把内存一个一个释放掉,sum99直到了再把sum100再算出来。这就是递归,你会发现没有算到临界值的时候,会开辟所有的内存计算每一个公式,最后算出临界值之后,再依次把内存释放掉,但是这个问题非常的危险,计算机运行速度非常快,如果我这里开1亿个内存,他会瞬间开1个亿的内存,所以计算机会受不了。所以大家去面试,面试官问你递归的知识,说明面试官对你的要求很高,是因为只要你了解了递归,就对内存管理机制和垃圾回收是非常理解的,主要靠递归考察你对内存的理解。

最后,可以去玩一下一个叫汉诺塔(Hanoi Tower)的小游戏,帮你更深刻理解递归!!!

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值