gpt4 book ai didi

c++ - 是否应该指定返回条件?

转载 作者:行者123 更新时间:2023-11-30 03:52:12 41 4
gpt4 key购买 nike

这些函数将给出相同的输出,它们都是正确的,但我想知道哪个在编程上更合适?

代码 1:

void inorder(node *t){
if(t==NULL)
return;
else{
inorder(t->left);
cout<<t->data<<" ";
inorder(t->right);
return;
}
}

代码 2:

void inorder(node *t){
if(t){
inorder(t->left);
cout<<t->data<<" ";
inorder(t->right);
}
}

这里的节点是二叉树的一个节点,具有以下结构:

struct node{
int data;
node *left;
node *right;
};

最佳答案

第二个看起来更好。

不过,我个人更喜欢这样:

void inorder(node * t){
if(t==NULL)
return;

inorder(t->left);
cout<<t->data<<" ";
inorder(t->right);
}

它是显式(如果t 为NULL,你不打算做任何事情)并且避免不必要的 block (因此缩进)删除其他。这种方法还提高了可读性并使代码简洁(考虑更大的函数和/或 block ,并删除不必要的else)。

我可能会重构这个函数,把它变成两个:

//Use const wherever possible!

void inorder(std::ostream & out, node const * t){
if(t==NULL)
return;

inorder(out, t->left);
out<<t->data<<" "; //write to any output stream
inorder(out, t->right);
}

void inorder(node const * t){
inorder(std::cout, t); //write to stdout
}

如果您使用第一个函数,这样您甚至可以将树打印到文件中,如:

std::ofstream file("inorder.txt");

inorder(file, tree);

希望对您有所帮助。

关于c++ - 是否应该指定返回条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30858863/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com