我的项目的想法是在具有多种可能结果的重复实验上构建概率树。
这是一个非常简单的项目,我认为我做得对。这是一个基本的树构建:有一个构建递归函数,它确定节点值并初始化子节点,然后构建子节点。
简化代码:
typedef struct Node {
int depth;
int noElements;
float probability;
struct Node *node0,*node1,*node4;
} Node;
void buildProbabilityTree(Node *node, int maxDepth) {
node->child1=malloc(sizeof node->child1);
//... set child1 values ...
buildProbabilityTree(node->child1,maxDepth);
node->child2=malloc(sizeof node->child2);
//... set child2 values ...
buildProbabilityTree(node->child2,maxDepth);
node->child3=malloc(sizeof node->child3);
//... set child3 values ...
buildProbabilityTree(node->child3,maxDepth);
}
int main(int argc, char *argv[]) {
Node root={0,0,1,NULL,NULL,NULL};
buildProbabilityTree(&root,3);
return EXIT_SUCCESS;
}
完整代码(仅 50 行)http://pastie.org/private/cqiazmgp4bvexcidzlmutg
问题是:它不起作用!
我正在使用 Codeblock 和 GNU gcc 编译器。当我运行逐步调试时,程序毫无问题地结束。但是当我在没有调试器的情况下构建它时,程序在到达概率树的“底部”时会崩溃。
任何人都知道这可能来自哪里?一个 Code::Blocks 选项可能吗?编译器问题?谢谢。