任何人都可以帮助我理解递归吗?我想以递归方式读取矩阵,我真的不知道如何。
我制定了一个计划,在以下步骤中将迭代算法转换为递归算法:
我递归读取矩阵的功能(不工作)如下:
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。 n
和m
是宽度和高度
答案 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;
}
}
工作