递归程序

来源:互联网 发布:java开发实战宝典 pdf 编辑:程序博客网 时间:2024/06/05 18:38
/** *  */package 马敏;/** * @author 敏儿 *@file:数字旋转方阵.java*@package:马敏*@project:马敏*@date time:2017年10月14日下午1:33:53*@location:https://github.com/1508010207/mamin.git */import java.util.Scanner;public class 数字旋转方阵 {private static int n;//方阵的行和列private static int[][] a;//保存方阵的值private static int number=1;//填充的数字public static void main(String[] args) {Scanner sc=new Scanner(System.in);n=sc.nextInt();a=new int[n][n];f(0,n-1);for(int i=0;i<n;i++){for(int j=0;j<n;j++){System.out.printf("%4d",a[i][j]);}System.out.println();}}public static void f(int begin,int size){if(size<0)return;if(size==0)//最后一圈只剩下一个元素{a[begin][begin]=number;return;}int h=begin,l=begin;for(int i=1;i<=size;i++){a[h][l]=number;number++;h++;}for(int i=1;i<=size;i++){a[h][l]=number;number++;l++;}//向上for(int i=1;i<=size;i++){a[h][l]=number;number++;h--;}for(int i=1;i<=size;i++){a[h][l]=number;number++;l--;}f(l+1,size-2);}}



/** *  */package 马敏;/** * @author 敏儿 *@file:数字旋转方阵.java*@package:马敏*@project:马敏*@date time:2017年10月14日下午1:33:53*@location:https://github.com/1508010207/mamin.git */import java.util.Scanner;public class 数字旋转方阵 {private static int n;//方阵的行和列private static int[][] a;//保存方阵的值private static int number=1;//填充的数字public static void main(String[] args) {Scanner sc=new Scanner(System.in);n=sc.nextInt();a=new int[n][n];f(0,n-1);for(int i=0;i<n;i++){for(int j=0;j<n;j++){System.out.printf("%4d",a[i][j]);}System.out.println();}}public static void f(int begin,int size){if(size<0)return;if(size==0)//最后一圈只剩下一个元素{a[begin][begin]=number;return;}int h=begin,l=begin;for(int i=1;i<=size;i++){a[h][l]=number;number++;h++;}for(int i=1;i<=size;i++){a[h][l]=number;number++;l++;}//向上for(int i=1;i<=size;i++){a[h][l]=number;number++;h--;}for(int i=1;i<=size;i++){a[h][l]=number;number++;l--;}f(l+1,size-2);}}