如何递归地读取矩阵c ++

时间:2013-01-03 17:26:05

标签: c++ recursion

任何人都可以帮助我理解递归吗?我想以递归方式读取矩阵,我真的不知道如何。

我制定了一个计划,在以下步骤中将迭代算法转换为递归算法:

  1. 重复结构 - >如果随后回忆身体某处的功能
  2. 从“顶部”变为0并且以相反的方式回归(我是概念的新手,这个想法可能很愚蠢)
  3. 我递归读取矩阵的功能(不工作)如下:

    void read_m(int n,int m)
    {
        if(n)
        {
            if(m)
            {
                read_m(n,m-1);
            }
            f>>v[n][m]; 
            read_m(n-1,m);
        }
    }
    

    我知道错误是什么,我不知道的是我应该如何解决这个问题。 提前致谢。

    P.S。 nm是宽度和高度

2 个答案:

答案 0 :(得分:0)

使用递归可能不是这里做到这一点的最好方法,但是假设你想要它并且你希望'f'为所有元素执行,当n为0时它不会起作用,因为它在里面if(n)阻止。

答案 1 :(得分:0)

#include<fstream>
using namespace std;

ifstream f("recurs.in");
ofstream g("recurs.out");

int a[20][20],n,m;

void read(int i, int j)
{
    if(j>1)
        read(i,j-1);
    else if(i>1) 
        read(i-1,j);
    f>>a[i][j];
}
int main()
{
    int i,j;
    f>>n>>m;
    read(n,m);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            g<<a[i][j]<<' ';
        g<<endl;
    }
}

工作