| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1357 人关注过本帖
标题:[求助]关于递归我有些不明白
只看楼主 加入收藏
asdffdsa
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-25
收藏
得分:0 
谢谢二 位 啊

还想问一下 你们写程序的时候 直接就在vc上 写吗
还是 先在纸上划一划

能不能 介绍一下经验
我是个 大二的 初学者
2006-05-30 17:30
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
介绍两个:WIN-TC、C-FREE
,这个……初学者一般都是先在纸上划一划,熟练了可能就不用了吧!我也是这学期学数据结构的,呵呵

2006-05-30 17:47
asdffdsa
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-25
收藏
得分:0 
真的很可惜 我是因为大一的时候没有好好学c
不过现在 在学数据结构 很感兴趣 想把它学好
2006-05-30 17:52
asdffdsa
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-25
收藏
得分:0 
递归很难阿
2006-06-02 13:21
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
递归,看起来很难,实际上并不难。
用多了也就很简单了。
我还记得我第一次看到递归程序的时候,两眼发楞,那时我也弄不清楚什么是递归,只是听老师说递归很难,我当时还以为递归是什么很高深的东西,现在想起来
找几个简单的例子试一下,弄清楚程序运行的过程,就很容易弄明白了。为了方便弄清程序运行的过程,你可以在适当的位子加上printf()函数输出点标记,这是我常用来检测错误和弄清程序运行过程的一个小诀窍。

我的征途是星辰大海
2006-06-02 13:48
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

递归就是栈。借用一下楼上的程序
if(!b){return NULL;}
else
{
if(b->data==x)
return b; //递归出口
else
{
FindNode(b->lchild,x);
FindNode(b->rchild,x);
}
}

以上程序,return b就是递归出口
注意,当你return的时候,并不是立刻离开程序
要注意,递归就是栈,当你findNode(b->lchild,x)的时候就代表入栈一次。
我举个例子, 例如你调用一次 FindNode(b->lchild,x);当你找到想要找的元素之后,return b(这个时候就是退栈) 程序会返回到FindNode(b->lchild,x),接着会调用FindNode(b->rchild,x);直到b==NULL;当b==NULL的时候就开始退栈了。退栈的过程是很复杂的过程,因为程序要记住你入栈地方。以便可以执行之后的语句。反正递归不是可以用语句解释清楚的。只能靠多实践。当时递归都是我自己领悟的,老师都没有讲过,数据结构直接跳过递归那章,我怀疑教我那个老师根本不会的。


c++/C + 汇编 = 天下无敌
2006-06-04 12:33
asdffdsa
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-25
收藏
得分:0 
太精辟了
看来我还是要好好的练习啊
2006-06-04 13:03
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

呵呵,我都还不怎么清楚数据结构包含哪些东西,哎~


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-04 19:05
asdffdsa
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-5-25
收藏
得分:0 
都是高手吧
脑子里面有就行了
我现在还编不出什么东西呢
昨天晚上没事的时候在宿舍编写学生成绩表的程序
怎么也弄不出来

虽然没有错误但是就是运行不出结果
老显示内存错误
也知道是因为逻辑上的错误
可就是改不出来
超级郁闷
2006-06-05 23:37
sccdyc
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-4-23
收藏
得分:0 

BTNode* FindNode(BTNode *b,ElemType x)//找到值为x的节点并返回
{


if(!b)//如果b不存在
{
return NULL; //返回未找到,并且跳出函数

}
else //否则(b存在的情况)
{

if(b->data==x) //如果找到了
{
return b; //返回b的地址,并且跳出函数
}
else //否则(继续查找)
{
FindNode(b->lchild,x);//用函数FindNode()遍历b的左子树(用同样方法,这句就是递归了)
FindNode(b->rchild,x);//用函数FindNode()遍历b的右子树 这句也是递归
}
}

}
请问当我找到了一个结点x后,用return返回时,是退出了整个函数,还是结束了本次递归调用?
你这个函数能找多个值为x的结点吗?


2006-06-08 18:31
快速回复:[求助]关于递归我有些不明白
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026990 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved