24小时热门版块排行榜    

查看: 2752  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

haopaper

金虫 (正式写手)

[求助] 求助关于C++语言中递归函数的输出问题 已有1人参与

问题是这样的,我有一个用来计算分形结构的函数,这个函数是一个递归函数,然后我想把所有的结果都输出在一个TXT文件中,这个该如何实现呢?其实就是递归函数的结果要输出在一个TXT文件里面。
我在函数内部定义了一个输出流,但是每次运行后都只有最后一次递归的结果,之前的都被覆盖了。
void Canto(float ax, float ay, float bx, float by, int count)
{
        float l = 100.0;
        ofstream OutCome("Zuobiao.txt";
        if ((bx - ax) < l)
        {
                OutCome << ax << "  " << ay << "0" << endl;
                OutCome << bx << "  " << by << "0" << endl;
                OutCome.close();
        }
        else
        {               
                double cx, cy, dx, dy;
                cx = ax + (bx - ax) / 3.0;
                cy = ay + 10.0;
                dx = bx - (bx - ax) / 3.0;
                dy = by + 10.0;
                ay = ay + 10.0;
                by = by + 10.0;
                count++;
                Canto(ax, ay, cx, cy, count);
                Canto(dx, dy, bx, by, count);
        }
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ZXj11111

铁虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
haopaper: 金币+50, 有帮助 2024-01-04 20:49:19
你的问题在于每次调用`Canto`函数时,都会重新打开并覆盖原有的`Zuobiao.txt`文件。为了解决这个问题,你可以考虑将文件操作移出递归函数,并在每次递归结束后,关闭文件。这样就不会出现文件被覆盖的情况了。

修改后的代码如下:

```cpp
#include <fstream> // 包含ofstream类

void Canto(float ax, float ay, float bx, float by, int count) {
    float l = 100.0;
    std:fstream Outcome("Zuobiao.txt"; // 使用std命名空间,避免与系统库冲突
    if ((bx - ax) < l) {
        Outcome << ax << " " << ay << "0" << std::endl;
        Outcome << bx << " " << by << "0" << std::endl;
        Outcome.close();
    } else {
        double cx, cy, dx, dy;
        cx = ax + (bx - ax) / 3.0;
        cy = ay + 10.0;
        dx = bx - (bx - ax) / 3.0;
        dy = by + 10.0;
        ay = ay + 10.0;
        by = by + 10.0;
        count++;
        Canto(ax, ay, cx, cy, count);
        Canto(dx, dy, bx, by, count);
    }
}
```

在这个版本的代码中,我们使用了`std:fstream`来创建文件对象,并在每次递归结束后,手动关闭文件。这样就能确保每次递归都能向同一个文件中写入数据,而不是覆盖掉之前的数据。

发自小木虫Android客户端
4楼2024-01-03 00:16:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

ofwhy

至尊木虫 (著名写手)

数组?每次在末尾赋值?

发自小木虫Android客户端
2楼2023-04-08 20:24:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

haopaper

金虫 (正式写手)

引用回帖:
2楼: Originally posted by ofwhy at 2023-04-08 20:24:07
数组?每次在末尾赋值?

你好,我也想过把一个数组的地址作为递归函数的形参传进去,但是现在这个递归函数有分支,所以我就没想明白怎么利用数组。
能麻烦你解释详细一点吗?
3楼2023-04-08 20:57:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

haopaper

金虫 (正式写手)

引用回帖:
4楼: Originally posted by ZXj11111 at 2024-01-03 00:16:16
你的问题在于每次调用`Canto`函数时,都会重新打开并覆盖原有的`Zuobiao.txt`文件。为了解决这个问题,你可以考虑将文件操作移出递归函数,并在每次递归结束后,关闭文件。这样就不会出现文件被覆盖的情况了。
修改 ...

非常感谢,我试试
5楼2024-01-04 20:49:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 澳大利亚 Murdoch University 全奖博士招生(3个名额)地质化工冶金领域 +57 AI8RaGaPaSCR 2026-08-07 60/3000 2026-08-14 04:45 by bxqFb8Dih2p1
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +11 医学老男孩 2026-08-13 29/1450 2026-08-14 00:04 by 大快人心啦
[文学芳草园] 阿姨 +4 汪汪锅 2026-08-09 4/200 2026-08-13 19:43 by arzu_hma
[基金申请] FileCode能看出啥? +10 要乐观耀哥 2026-08-10 28/1400 2026-08-13 17:51 by 医学老男孩
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[论文投稿] 职称评审,求友友推荐见刊最快的期刊 +4 工厂打螺丝 2026-08-08 4/200 2026-08-12 09:18 by hansi2025
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +7 布布和一二 2026-08-10 10/500 2026-08-12 09:12 by 布布和一二
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +11 yufeiwaner 2026-08-09 13/650 2026-08-12 08:17 by yufeiwaner
[硕博家园] 读博的好处 +3 lnee 2026-08-11 3/150 2026-08-11 18:10 by 希望我好好的
[基金申请] 什么时候出结果,有咨询渠道??? +3 Tide man 2026-08-11 3/150 2026-08-11 17:54 by kudofaye
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 关于代码变化问题,想知道的进来 +17 且听虎啸 2026-08-07 24/1200 2026-08-10 18:35 by zhangduo2008
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
信息提示
请填处理意见