数据结构中,什么可以作为实现递归函数调用的一种数据结构?知道的大侠告诉我呗?
堆栈是一种逻辑结构,而不是数据结构。在这里填充堆栈并不严格。虽然很多地方的试卷给出的答案是stack,但我认为这里应该填写递归工作栈,即递归工作栈是用来存储被调用函数执行所需的数据,既有存储又有关系和操作,符合数据结构的定义。
在学习数据结构与算法的时候,一旦出现递归就很难理解,对于递归有没有什么好的理解方法?
哈哈,这种情况和我当时学编程一样。
首先,既然你可以问这个问题,我假设你已经看过一些递归程序的例子,而不是仅仅看定义来谈这个(如果你真的看不到,先去看看)
然后,在递归中,有一个非常重要的东西,那就是递归的退出条件,这是基础理解所有递归算法。递归必须有退出条件,否则程序将永远无法完成。退出条件是当递归程序运行到某个对象时,它不会继续调用自己。这个退出条件可以是递归的次数,也可以是判断某个数是否足够大,或者是否没有更多的子项,等等。通常,如果在递归函数中看到两个或多个返回(例如,如果返回xelse返回函数本身),那么不是返回函数本身的行就是退出条件。
找到退出条件后,剩下的就简单了。您可以将退出条件以外的部分拆分为完全相同的函数来理解它。例如,有一个递归函数f(intx),在return部分有一个句子是returnf(k),所以你重写它如下:
f1(intx),f2(intx),f3(intx)
函数体是一样的,只要复制f(intx),只要改变return,f1中原来的returnf(k)就变成了returnf2(k),而f2改为返回f3(k),简而言之,就是不断引入下一个要执行的函数。
然后您会发现函数体是相同的。为什么我要写这个函数n次,然后直接返回我自己
!如果你能在这里读到它,你已经可以理解它了。如果你不明白,就找一个例程打开自己写。
递归,其实是:从前有一座山,山顶有一座寺庙。庙里有个老和尚在讲故事。他在讲什么故事?他说:“从前有一座山
当整个故事达到5000字的时候,它就不会继续了。这5000字是退出条件。
理解经验是:1。不要跟着分析,先找到退出条件,这对理解算法为什么这样写很有帮助,递归只是一个过程。2当你不能理解程序时,把递归函数分成三个相同的函数,用迭代来连接。假设第三次达到退出条件,并且没有递归/迭代。在这种情况下,请再次理解。
数据结构和算法,递归运算时所用的递归栈是否算空间复杂度?
但是,该算法没有考虑特定实现技术所消耗的额外运行时间和空间。最典型的算法是计算斐波那契序列f(n)=f(n-1)f(n-2)。在递归情况下,空间复杂度是恒定的。然而,在c/c中,消耗的内存空间大于o(n),而在其他编译器中,它可能是一个常数,而且算法非常纯。他只考虑算法所消耗的空间来存储所需或生成的数据。
原文标题:递归是用什么数据结构实现的 数据结构中,什么可以作为实现递归函数调用的一种数据结构?知道的大侠告诉我呗?,如若转载,请注明出处:https://www.saibowen.com/news/19738.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。