| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:[求助]我这个递归哪有问题吗?
只看楼主 加入收藏
w5941120
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2006-4-16
收藏
 问题点数:0 回复次数:8 
[求助]我这个递归哪有问题吗?

是个关于二叉树的,这是求二叉树结点的函数,我调用这个函数后,i 怎么都等于1,就是说这个函数求出来的总是说只有1个结点,请教大家我是哪没有写对啊?

void BinaryTree::NodeNumber()
{
int m=0, n;
n=NodeNumber( root, m );
cout<<"该二叉数有"<<n<<"个结点!"<<endl;
}

int BinaryTree::NodeNumber( BinTreeNode *current, int i )
{
if( current!=NULL )
{
i++;
NodeNumber( current->leftChild, i );
NodeNumber( current->rightChild, i );
}
return i;
}

搜索更多相关主题的帖子: 递归 
2006-06-01 13:29
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
当然有问题了,你这里传进去的i的值不能作为输出,只是返回了,
NodeNumber( current->leftChild, i );执行完了i的值不会有任何变化
[CODE]int BinaryTree::NodeNumber( BinTreeNode *current, int& i ) //改为引用
{
if( current!=NULL )
{
i++;
NodeNumber( current->leftChild, i );
NodeNumber( current->rightChild, i );
}
return i;
}[/CODE]

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-01 14:23
w5941120
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2006-4-16
收藏
得分:0 
对,疏忽了,呵呵
谢谢斑竹的帮助啊~
2006-06-01 15:04
w5941120
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2006-4-16
收藏
得分:0 
但是不会有变化也应该是0,怎么是1啊?
2006-06-01 15:12
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
int m=0, n;
n=NodeNumber( root, m ); //因为你用n来接收了NodeNumber返回的数量,而NodeNumber每次都会返回1
cout<<"该二叉数有"<<n<<"个结点!"<<endl;

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-01 17:06
w5941120
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2006-4-16
收藏
得分:0 

恩,好象是这样的,谢谢了~

2006-06-01 17:16
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
这样行不行
int BinaryTree::NodeNumber(BinTreeNode *current)
{
if(current==NULL)
return 0;
else
return NodeNumber(current->leftChild)+NodeNumber(current->rightChild)+1;
}


2006-06-01 20:02
w5941120
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2006-4-16
收藏
得分:0 

楼上的,你这个我只是想了想,没试验,觉得行得通,而且写得比我好
我还需要多学习学习这种思想啊~还差得远啊,呵呵

2006-06-02 08:30
bleach1983
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-5-22
收藏
得分:0 

学习


动感超人~~动感光波~~HOHO~~小白,你也是男孩子,所以你也要努力~~
2006-06-02 13:32
快速回复:[求助]我这个递归哪有问题吗?
数据加载中...
 
   



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

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