这是否可以被称为递归?

3

我知道一个函数调用自身是递归的。但是,一个对象创建自己类型的对象也是递归吗?此外,我没有使用这个代码的意图,因为它显然会引起问题,我只想知道它是否符合递归的条件。

class Cell 
{
    Cell()
    {
        Cell c = new Cell();
    }
} 

那在C++中甚至无法编译。 :) - selbie
5
这符合堆栈溢出的条件。 - Kayaman
1
虽然你的问题是“一个对象创建自己类型的对象是否递归?”,但人们现在正在讨论你代码的有效性 :) 根据定义,递归是一种方法,其中解决问题的方法取决于相同问题的较小实例的解决方法。在我看来,在你的代码中没有问题和解决方案。 - B001ᛦ
2
@Kayaman - 哦不!也许我现在不会发布这段代码了。 - David Wilson
2
我相信@Joe是在使用讽刺的手法来凸显许多人(常见于Stack Overflow)选择评论问题以外的内容。你自己也指出,人们谈论代码有效性而不是回答问题,然后继续解决“问题和解决方案”,这绝对不是被问到的内容。 - David Wilson
显示剩余9条评论
1个回答

3

确实是这样。假设某些调用代码引发了Cell 实例的构建,那么 Cell 构造函数会自动被调用。

除非你以某种方式阻止递归(例如通过设置最大实例限制),否则你的程序最终将崩溃。


如果编译器消除递归且Cell的实际内存没有被触及,那么你可能需要等待地址空间耗尽。 - Revolver_Ocelot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接