递归函数在运行时崩溃

时间:2015-11-05 13:15:19

标签: c++ recursion linked-list

我正在编写一个涉及链表的程序。我编写了一个函数,它返回链表中的第n个节点,它以递归方式调用自身。我的程序编译并运行直到递归函数然后崩溃。这是节点的构造函数以及递归函数:

LinkedList::LinkedList():
    head(head){
        sizeInt = 0;
}

Node* LinkedList::get_nth(const int& n) const {
    Node* node = new Node();
    for(int counter = 1; counter <= n; counter++){
        node = get_nth(counter + 1);
    }
    return node;
 }

这个功能有什么问题?如果您需要更多详细信息或代码,请与我们联系。

2 个答案:

答案 0 :(得分:5)

没有任何东西可以阻止递归(除其他外,还有一个递归调用,n增加到n + 1。)

这会溢出你的堆栈,程序将因此而崩溃。

答案 1 :(得分:4)

递归是无限的。每次调用get_nth,您都会启动一个最初调用get_nth(1)的循环,然后调用get_nth(1)并调用get_nth(1) ...直到堆栈空间耗尽。< / p>

提示解决方案:递归线性搜索不需要循环。