C++递归实现矩阵填充
#include<iostream>
#include<iomanip>
using namespace std;
const int N=5;
void FillMatrix(int matrix[N][N],int size,int number,int offset){
//matrix为总矩阵,size为剩余矩阵的大小,假设为方阵
//number为第一个要填的数,offset为剩余矩阵在总矩阵中的位置
//递归终止条件1
if(size==0) return;
//递归终止条件2
if(size==1){
matrix[offset][offset]=number;
return;
}
//填充外围
int i;
for(i=0;i<size-1;i++){
matrix[offset+i][offset]=number+i;
matrix[offset+size-1][offset+i]=number+size-1+i;
matrix[offset+size-1-i][offset+size-1]=number+size-1+size-1+i;
matrix[offset][offset+size-1-i]=number+size-1+size-1+i+size-1;
}
//填充内部小圈
FillMatrix(matrix,size-2,number+4*size-4,offset+1);
}
int main(){
int i,j,test[N][N];
FillMatrix(test,5,2,0);
for(i=0;i<5;i++){
for(j=0;j<5;j++){
cout<<setw(4)<<test[i][j]<<' ';
}
cout<<endl;
}
return 0;}
*代码来自于清华大学程序设计基础课程