为什么递归算法效率不高啊???

ratzip 2005-05-21 11:53:34
递归的效率不高 不太理解

比如 二叉排序树的查找算法
typedef struct node
{
int data;
struct node * left, *right;
}node;
node * seektree(node * BT,int key)
{

if(BT==NULL) return NULL;
else if(BT->data==key) return BT;
else if(BT->data<key) return seektree(BT->left);
else if(BT->data>key) return seektree(BT->right);
}//递归

typedef struct node
{
int data;
struct node * left, *right;
}node;
node * seektree(node * BT,int key)
{
int flag;
node *p,*q;
flag=0;
p=BT;
while(p!=NULL&&flag==0)
{
if(p->key==k)
flag=1;
else if(k<p->key)
p=p->left;
else
p=p->right;
}
return p;
}//非递归


为什么非递归的效率高啊

不太理解 请指点
...全文
377 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
galois_godel 2005-05-21
  • 打赏
  • 举报
回复
从复杂度意义上来说没有区别的,一个的栈操作多些,写得好的话影响不大的
blue_sky007 2005-05-21
  • 打赏
  • 举报
回复
递归过程中,系统建立堆栈来保存上一层状态信息,
和退栈获取还原系统状态都要有开销的.系统做的事情不少,
所以效率要低.
不过递归容易写,容易读懂,而且代码一般比较精简.
GetTheWorld 2005-05-21
  • 打赏
  • 举报
回复
建栈退栈有开销嘛

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧