⑴ 昨天碰到一個頭疼的java筆試題 :要求用遞歸演算法去實現,在屏幕上輸入5,4,顯示如下圖所示結果
importjava.util.Scanner;
publicclassMianShi
{
privatestaticvoiddigui(String[][]arr,intmax,intt,intquan)
{
if(quan-1>arr.length-1)
{
return;
}
for(inti=quan-1;i<arr[quan-1].length-(quan-1);i++)
{
Stringtmp="";
for(intk=0;k<(max+"").length()-(t+"").length();k++)
{
tmp+="0";
}
tmp+=t;
if(null==arr[quan-1][i])
{
arr[quan-1][i]=tmp;
}
t++;
}
t--;
for(inti=quan-1;i<arr.length-(quan-1);i++)
{
Stringtmp="";
for(intk=0;k<(max+""螞和).length()-(t+"").length();k++)
{
tmp+="0";
}
tmp+=t;
if(null==arr[i][arr[i].length-(quan-1)-1])
{
arr[i][arr[i].length-(quan-1)-1]=tmp;
}
t++;
}
t--;
for(inti=arr[arr.length-(quan-1)-1].length-(quan-1)陵物局-1;i>=quan-1;i--)
{
Stringtmp="";
for(intk=0;k<(max+"").length()-(t尺讓+"").length();k++)
{
tmp+="0";
}
tmp+=t;
if(null==arr[arr.length-(quan-1)-1][i])
{
arr[arr.length-(quan-1)-1][i]=tmp;
}
t++;
}
t--;
for(inti=arr.length-(quan-1)-1;i>=quan-1;i--)
{
Stringtmp="";
for(intk=0;k<(max+"").length()-(t+"").length();k++)
{
tmp+="0";
}
tmp+=t;
if(null==arr[i][quan-1])
{
arr[i][quan-1]=tmp;
}
t++;
}
t--;
digui(arr,max,t,++quan);
}
publicstaticvoidmain(String[]args)
{
Scannersc=newScanner(System.in);
int[]rc=newint[2];
System.out.print("輸入列、行:");
for(inti=0;i<rc.length;i++)
{
try
{
rc[i]=Integer.parseInt(sc.next());
}
catch(NumberFormatExceptione)
{
i--;
}
}
sc.close();
intr=rc[1],c=rc[0];
intmax=r*c;
String[][]arr=newString[r][c];
intt=1;
intquan=1;
digui(arr,max,t,quan);
for(inti=0;i<arr.length;i++)
{
for(intj=0;j<arr[i].length;j++)
{
System.out.print(arr[i][j]+"");
}
System.out.println();
}
}
}