【发布时间】:2015-07-13 19:12:44
【问题描述】:
我试图解决树中的一个问题,并陷入递归并编写代码。 但我不明白为什么它会发出这个!有人帮助如何编码 给出这个输出 我的程序是 x=0,y=0
int height1(node *root,int x,int y)
{
int val;
if(root==NULL)
return 1;
else
{
x=x+height1(root->left,x,y);
y=y+height1(root->right,x,y);
printf("x=%d and y=%d %d\n",x,y,root->data);
if(x>y)
return x;
else
return y;
}
理解递归流程只是一个粗略的工作。 树遍历的输入是 50 40 70 45 30 44 48 和
x y root->data
1 1 30
2 1 44
4 1 48
3 4 45
1 4 40
5 1 70
4 5 50
为什么它会以这种方式出现,以我的方式,它应该每次都添加 y 和 x,所以值应该增加,
请给我一些建议,因为每次我解决树问题时,我总是 陷入递归,任何人都可以建议什么是正确的方法。
我知道找出基本条件很重要,而且我知道如何找到它。但无法知道输出是如何产生的。
我知道这里有很多最有经验的程序员 我想请给我一些建议,因为我认为他们在递归方面也遇到了一些问题,所以他们如何解决这个问题。当有新问题出现时,他们如何解决递归问题。
我应该参考一些书还是应该只解决一些程序。 所以,我需要你的建议,这样我才能在这方面做得很好。
【问题讨论】:
-
如果您至少解释了(不完整的)代码应该做什么,这将更容易理解
-
只是获取程序流程的粗略代码。当我试图获得树的高度并卡住以便理解时,我写了那个粗略的代码。