递归函数
再次调用自身的行为成为递归
应用与斐波那契数列
栈
实现一种LIFO能力,具备push和pop功能
C++里面已经含有这种函数
队列
实现一种FIFO能力,具备push和pop功能
C++里面已经含有这种函数
深度优先搜索(DFS)
思想:从某个状态开始,不断转移状态,直至无法转移,然后回退前一步,继续转移其他状态,如此不断循环,直至找到最终解。
利用深度优先搜索的思想解下题:
题二:
广度优先搜索(DFS)
思想:总是搜索距离初始状态近的状态。
深度优先搜索(隐式)利用栈进行计算,而广度优先搜索利用了队列进行计算。
利用广度优先搜索思想解下题:
特殊状态的枚举
利用n个元素共n的阶乘种不同的排列生成出来。
剪枝
思想:有些状态无论如何都不存在解的时候,我们需要直接跳过搜索,这一方法成为剪枝。
栈内存和堆内存
主调函数所拥有的局部变量存储在特点的内存区域,这些区域成为栈,另外用new和malloc申请的区域成为堆内存。栈内存在程序启动时被统一分配,并不再扩大。全局变量被保存在堆内存区。
本文深入探讨递归函数的概念及其应用,通过斐波那契数列实例展示递归的威力。同时,介绍栈和队列的基本操作,以及它们在C++中的实现。进一步解析深度优先搜索(DFS)和广度优先搜索(BFS)的思想与应用,通过具体问题给出解题思路。此外,文章还讨论特殊状态的枚举与剪枝技巧,提高算法效率。最后,阐述栈内存和堆内存的区别,帮助理解程序运行时的数据存储。
穷竭搜索&spm=1001.2101.3001.5002&articleId=25978965&d=1&t=3&u=c8772e2ae38e448e801482dc708e0cde)
1842

被折叠的 条评论
为什么被折叠?



