八皇后问题c语言递归 如何理解递归,回溯,动态规划等算法?
浏览量:1513
时间:2021-03-11 03:29:45
作者:admin
如何理解递归,回溯,动态规划等算法?
递归比较简单,是递归的逆算法。例如,给定a(10)和a(n)=f(a(n1)),让您找到a(1)。回溯是一种必须用于深度优先搜索的方法。建议大家看一看“八皇后问题”,看完后要理解。动态规划是一种以空间换时间的算法,即占用大量内存,但具有较高的时间效率。建议你看看“拦截导弹”问题和“0/1背包问题”。最好先看看动态规划中的问题,然后再了解概念
递归的基本思想是“调用你自己”。使用递归的方法是直接或间接地调用自己。
其实递归方法体现了“类比”和“同步重复”的思想。它可以用简单的程序解决一些复杂的计算问题,但计算量很大。还有一些数据结构,如二叉树,具有固有的递归特性;另外还有一种问题,虽然没有明显的递归结构,但由于其普遍性,用递归程序编写程序比其它方法更容易,如八皇后问题、河内塔问题等对于递归程序,我们应该学会用递归来解决问题。无论是直接递归还是间接递归,都需要在当前层调用下一层时实现参数传递,获取下一层返回的结果,并通过调用上一层返回当前层的结果。对于各层调用的现场存储和恢复,由程序自动实现,无需人工干预。因此,在递归程序的设计中,关键是找出调用所需的参数、返回的结果以及递归调用结束的条件。例如在阶乘函数fact(n)中,每层需要传递一个自然数n,返回n*fact(n-1),递归调用结束的条件为n=0,因此可以方便地编写相应的程序
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。