这篇文章主要讲解了“是什么递归函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“是什么递归函数”吧!
说到递归函数,不得不联想到我们小时候听过的一则故事:
从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,故事的内容是:从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,故事的内容是:从前有座山...
这个故事严格意义上来讲不是递归,因为它会一直重复下去,没有终止条件,我们称之为死循环,那到底什么是递归呢?
再讲一个故事:
一个小朋友坐在第10排,他的作业本被小组长扔到了第1排,小朋友要拿回他的作业本,可以怎么办?
他可以拍拍第9排的小朋友,说“帮我拿第1排的本子”,而第9排的小朋友可以拍拍第8排小朋友,说“帮我拿第1排的本子”...如此下去,消息终于传到了第1排小朋友那里,于是他把本子递给第2排,第2排又递给第3排...终于,本子到手啦!
这就是递归,拍小朋友的背可以类比为函数调用,而小朋友们都记得要传消息、送本子,是因为他们有记忆力,这可以类比栈。
递归的过程:
递归:就是在运行的过程中调用自己。
成立条件:
1. 子问题须与原始问题为同样的事;
2. 每次递归都是为了让问题规模变小且更为简单;
3. 不能无限制地调用自己,须有个明确的终止条件。
递归函数:一个函数在其内部调用该函数自己,并满足上述成立条件,那么这个函数就是递归函数。
那递归的作用又是什么?(为什么我们要用到递归呢?)
作用: 递归算法可以解决一些通过递归定义的题目 —— 通俗一点来讲就是一个大问题中蕴含着一些小问题,而这些小问题同时又与大问题的结构相同,只是规模更小了。
递归蕴含的核心思想就是数学归纳法:为了求解问题p(n),首先要解决基础情形p(1),然后假定p(n-1)已经解决,在此基础上若p(n)得解,那么所有问题均得解。
下面用数学代入法来理解就更清晰了,我们用递归来计算6的阶乘(先向前递进,再向后回归):
f(6) => 6 * f(5) => 6 * (5 * f(4)) => 6 * (5 * (4 * f(3))) => 6 * (5 * (4 * (3 * f(2)))) => 6 * (5 * (4 * (3 * (2 * f(1))))) => 6 * (5 * (4 * (3 * (2 * 1)))) => 6 * (5 * (4 * (3 * 2))) => 6 * (5 * (4 * 6)) => 6 * (5 * 24) => 6 * 120 => 720
感谢各位的阅读,以上就是“是什么递归函数”的内容了,经过本文的学习后,相信大家对是什么递归函数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。