Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 11:29   #1
videolord
Пользователь
 
Аватар для videolord
 
Регистрация: 23.02.2011
Сообщений: 28
Радость рекурсия

привет всем!итеративно вывел N^2 чисел – заполненный по спирали массив,но не получается рекурсивно,помогите пожалуйста!
Ввод
3
Вывод
1 2 3
8 9 4
7 6 5

код на java без рекурсии

Код:
import java.util.Scanner;
public class spiral {

	public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	int n=sc.nextInt();
	int[][] A=new int[n+3][n+3];
	   for (int i=0;i<=n+1;i++)
		 for(int j=0;j<=n+1;j++)
		   A[i][j]=1;
	   
	    for (int i=1;i<=n;i++) 
		   for (int j=1;j<=n;j++) 
		         A[i][j]=0;
	    
	    /*for (int i=0;i<=n+1;i++){
			 for(int j=0;j<=n+1;j++){
			   System.out.print(A[i][j]+" ");
			 }
	    System.out.println();
	    }*/
	    int i=1;
	    int j=0; //recurs(int n,int i,int j,int di,int dj)
	    int di=0;
	    int dj=1;
	    for (int cnt=1;cnt<=n*n;cnt++){ 
	       if (A[i+di][j+dj]!=0) {
	          if ((di==0)&&(dj==1)){
	             di=1;
	             dj=0;
	          }
	          else if ((di==1)&&(dj==0)){
	             di=0;
	             dj=-1;
	          }
	          else if ((di==0)&&(dj==-1)){
	             di=-1;
	             dj=0;
	          }
	          else if ((di==-1)&&(dj==0)){
	             di=0;
	             dj=1;
	          }
	          }
	       i+=di;
	       j+=dj;
	       A[i][j]=cnt;
	    }
	    
	    
	    for ( i=1;i<=n;i++){
			 for( j=1;j<=n;j++){
			 System.out.print(A[i][j]+" ");
			 }
			 System.out.println();
		}
	    
	   

	    
	}

}
videolord вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рекурсия DinaraIITU Помощь студентам 3 04.11.2010 15:39
Рекурсия RamilFaz Общие вопросы C/C++ 0 21.10.2010 02:19
Рекурсия LegionuS Паскаль, Turbo Pascal, PascalABC.NET 4 29.09.2010 15:31
Рекурсия rasals Помощь студентам 4 14.09.2010 18:32
рекурсия c++ dzhegan Помощь студентам 0 20.05.2010 18:19