24小时热门版块排行榜    

查看: 2355  |  回复: 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的回帖

haopaper

金虫 (正式写手)

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

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

ofwhy

至尊木虫 (著名写手)

数组?每次在末尾赋值?

发自小木虫Android客户端
2楼2023-04-08 20:24:07
已阅   回复此楼   关注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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 11:09 by lqtl9djx19
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:54 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:39 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:53 by lqtl9djx19
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:38 by lqtl9djx19
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 07:55 by lotyj5cz79
[基金申请] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:40 by lotyj5cz79
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:38 by lotyj5cz79
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:23 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:08 by lotyj5cz79
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 3/150 2026-02-18 06:53 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 00:40 by tk2gfblvuz
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 00:23 by tk2gfblvuz
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-17 23:40 by tk2gfblvuz
[基金申请] 基金正文30页指的是报告正文还是整个申请书 +3 successhe 2026-02-16 4/200 2026-02-17 20:56 by successhe
[基金申请] 今年春晚有几个节目很不错,点赞! +5 瞬息宇宙 2026-02-16 6/300 2026-02-17 12:49 by jymy19840415
[微米和纳米] 球磨粉体时遇到了大的问题,请指教! 10+3 6sbiam 2026-02-12 15/750 2026-02-16 15:03 by tgzxzqj
[基金申请] 过年走亲戚时感受到了所开私家车的鄙视链 +3 瞬息宇宙 2026-02-15 5/250 2026-02-16 14:23 by aspect3000
[基金申请] 情人节自我反思:在爱情中有过遗憾吗? +4 瞬息宇宙 2026-02-15 5/250 2026-02-15 22:28 by baiboxie
[硕博家园] 江汉大学解明教授课题组招博士研究生/博士后 +3 cleverlyy 2026-02-12 3/150 2026-02-12 21:02 by qsdf1
信息提示
请填处理意见