3.3栈与递归的实现3.3.1递归函数的定义递归函数是直接调.pptVIP

  • 3
  • 0
  • 约4.36千字
  • 约 22页
  • 2017-04-04 发布于天津
  • 举报

3.3栈与递归的实现3.3.1递归函数的定义递归函数是直接调.ppt

3.3栈与递归的实现3.3.1递归函数的定义递归函数是直接调.ppt

3.3栈与递归的实现 3.3.1递归函数的定义 递归函数:是直接调用自己或间接调用自己的函数。 3.3.2递归函数适用的场合 在解决现实问题中,对于求解一个复杂的或者问题规模较大的问题,如果可以将其划分为一些简单的或者规模较小的问题进行解决,如果这种划分满足: 所划分成的子问题性质与原来的大问题相同。 当问题规模小到一定程度的时候直接有解。 对于满足以上条件的问题我们就可以考虑使用递归的方法求解。 3.3.3 直观的递归 某些数学函数是递归定义的。 求n!。 具体实现如下: long fact(int n) { if(n==0) return 1; else return n*fact(n-1); } 思考题:上面问题的非递归算法如何求解? 4、树形结构的递归问题----第六章介绍 3.3.4非直观的递归问题 某些问题本身没有明显的递归结构,但可以转化成递归结构。 hanoi塔问题----汉诺塔P55 如果有一个盘子,直接从X移到Z即可。 如果有n个盘子要从X移到Z,Y作为辅助。问题可以转化为,先将上面n-1个从X移动到Y,Z作为辅助,然后将第n个从X移动到Z,最后将剩余的n-1个从Y移动到Z,X作为辅助。 void move(char a,char b) {//从a移动到b couta--bendl; } void hanoi(int n,char X,c

文档评论(0)

1亿VIP精品文档

相关文档