递归函数可以写入C ++中的文件吗?

时间:2010-02-10 19:14:00

标签: c++ file recursion

我将有两个类功能。第一个类函数打开文件。然后它调用第二个函数,该函数写入文件并递归调用自身。当第二个函数完成时,原始函数将关闭文件。

是否可以这样做?

5 个答案:

答案 0 :(得分:8)

当然,只要将文件句柄/对象传递给递归函数:

void recursion(int data, int maxdepth, ostream &os)
{
    // must eventually break out
    if (maxdepth == 0)
        return;

    // write data
    os << data << std::endl;

    // and call one deeper
    recursion(data + 1, maxdepth - 1, os);
}

void start(const char *filename)
{
    std::ofstream os(filename);

    recursion(0, 100, os);
}

答案 1 :(得分:5)

是的,这完全有可能。

答案 2 :(得分:5)

是的,只要您的递归函数具有基本情况,它就会终止。

func2(int p) {
  if (p == 0) return;
  //write
  func2(--p);
}

func() {
  //open file
  func2(10);
  //close file
}

答案 3 :(得分:3)

是的,因为即使该序列是递归定义的,写调用也是顺序的。无论如何,文件对象只能看到写入调用的线性系列。

答案 4 :(得分:1)

是。 C ++或文件系统中的任何内容都不会阻止您这样做。