CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

一个C++的递归问题?请各位大侠帮帮我这初学的“小饭桶”好吗?

楼主tommyhan(Tommy)2001-10-25 21:19:07 在 C/C++ / C语言 提问

下面是一个排序程序,用到了递归。请大侠指点一下递归处的问题?  
  在下面程序的//后面有两到问题,实在让学生我急的抓耳撓腮,不过,  
  我想这些小问题对于各位大侠来说,只不过是小菜一碟。  
  请帮帮我吧  
  我都快要疯了!!!!!  
   
   
  #ifndef   QUIKSORT_H  
  #define   QUIKSORT_H  
   
  template<class   T>  
  inline   void   swap(T&   t1,   T&   t2)  
  {  
          T   hold   =   t2;  
          t2   =   t1;  
          t1   =   hold;  
  }  
   
  template<class   T>  
  void   quicksort(T   *array,   int   hi,   int   lo   =   0)  
  {  
          while   (hi   >   lo)  
          {  
                  int   i   =   lo;  
                  int   j   =   hi;  
   
   
                  do  
                  {  
                          while   (array[i]   <   array[lo]   &&   i   <   j)  
                                  i++;  
                          while   (array[--j]   >   array[lo])  
                                  ;  
                          if   (i   <   j)  
                                  swap(array[j],   array[i]);  
                  }  
                  while   (i   <   j);  
   
                  swap(array[lo],   array[j]);  
   
           
                  if   (j   -   lo   >   hi   -   (j+1))  
                  {  
         
                          quicksort(array,   j-1,   lo);  
                           
                          //问题(1)请问在调用quicksort()函数  
                          //的递归后,什么时候才能再执行下边的语句呢?我想每次递归  
                          //都调用自己,根本就没有机会调用下边的语句。  
                          //是不是在调用自己quicksort(array,j-1,lo)的同时执行lo=j+1  
                          //这条语句呢?这样是不是一来每次调用自己的同时都执行lo=j+1                         //语句?  
                                                                     
   
   
                          lo   =   j+1;  
                   
                  }  
                  else  
                  {  
                     
                          quicksort(array,   hi,   j+1);  
                          hi   =   j-1;  
                  }  
          }  
  }  
   
  #endif  
                                    //问题(2)请问象这样的递归,if不行,还有else   递归到  
                                    //什么时间是个头呀?什么时候推出呢?  
                                     
  问题点数:20、回复次数:2Top

1 楼weakest()回复于 2001-10-25 21:32:13 得分 10

while   (hi   >   lo)  
  这个条件很快就会不成立了,程序递归结束Top

2 楼SlaSk(七叔)回复于 2001-10-25 21:45:23 得分 10

设立一个条件啊。。。。。。  
  递归的时候带个参数用于判断的。。Top

相关问题

  • C递归算法问题
  • C++初学
  • c初学者
  • C++初学?
  • C#初学者
  • 初学C++
  • C#初学者
  • 初学C问题,
  • 关于初学C++。
  • 初学C++,请教:...

关键词

  • 递归
  • 帮帮
  • 大侠
  • quiksort
  • 问题
  • lo
  • 程序
  • hold
  • array

得分解答快速导航

  • 帖主:tommyhan
  • weakest
  • SlaSk

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo