C语言编程题(要求用递归调用编写)

编写上面这个程序
编出图中所显示的矩阵

第1个回答  2014-05-30

递归法 实现 想看明白 请先去吧把我另一个“撞墙法”的非递归程序看明白

百度空间hi.baidu.com/yuqinwang/item/cd25df20856e732f72863e05

#include <stdio.h>
void fun(int a[][5], int w[],int x, int y, int k, int d)
{
a[x][y] = k;
if(k==1)
return;
if(d==1)
{
if(y>w[2])
fun(a, w, x, y-1, k-1, 1);
else
{
w[2]++;
fun(a, w, x+1, y, k-1, 2);
}
}
if(d==2)
{
if(x<w[1])
fun(a, w, x+1, y, k-1, 2);
else
{
w[1]--;
fun(a, w, x, y+1, k-1, 3);
}
}
if(d==3)
{
if(y<w[3])
fun(a, w, x, y+1, k-1, 3);
else
{
w[3]--;
fun(a, w, x-1, y, k-1, 4);
}
}
if(d==4)
{
if(x>w[0])
fun(a, w, x-1, y, k-1, 4);
else
{
w[0]++;
fun(a, w, x, y-1, k-1, 1);
}
}
}
int main()
{
int a[5][5] = {{0},{0},{0},{0},{0}};
int wall[4] = {1, 4, 0, 4};
int i;
int j;
fun(a, wall, 0, 4, 25, 1);
printf("the array is:\n\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%6d", a[i][j]);
}
printf("\n");
}
return 0;
}

本回答被网友采纳
第2个回答  2014-05-30
第3个回答  2014-05-30
典型的模拟题,比较麻烦
第4个回答  2014-05-30
我当初是用switch写的,递归想不到呢追问

那把你用switch写的给我看吧

第5个回答  2014-05-30
不太明白这个矩阵的排列规则,能说一下吗追问

这是一个5行5列的矩阵,最中间(第3行第3列)是1,然后从1—25依次以螺旋形展开

相似回答