在网上看到别人写的打印蛇形矩阵的递归做法,很神奇。至今还未彻底理解其中的数学推理关系,先转了。找不到原文了,抱歉
#include <iostream>
using namespace std;
int getValue(int N, int _y, int _x)
{
if (1 == _y && 1 == _x)
return 1;
if ((_y <= _x) && (_y + _x <= N + 1))
return 1 + getValue(N, _y, _x - 1);
if ((_y <= _x) && (_y + _x > N + 1))
return 1 + getValue(N, _y - 1, _x);
if ((_y > _x) && (_y + _x > N))
return 1 + getValue(N, _y, _x + 1);
if ((_y > _x) && (_y + _x <= N))
return 1 + getValue(N, _y + 1, _x);
}
int main()
{
int n = 0;
cin >> n;
for (int y = 0;y < n;++y)
{
for (int x = 0;x < n;++x)
{
cout << getValue(n, y + 1, x + 1) << " ";
}
cout << endl;
}
return 0;
}