ランダム数字を発生させた関数で、同一数字が出たら再計算させるプログラムの
つもりでしたが、終わらず再計算後を繰り返えしてしまいます。
  X ,Y は整数
コード:  
void keisan(int x,int y){
	static int flag;
 	int temp = 0;
 	int num[x];
 	if(flag == 0){
 	srand((unsigned int)time(NULL));
 	         flag =1;}
 	rand();rand();rand();rand();rand();rand(); // 空回し
 	for(int i = 0;i < x;+i++){
 		 num[i] = rand()%y+1;
 		 }
 	for(int i = 0;i < x;i++){         //昇順に並べ替え
 		for(int j = 0; j < x;j++){
 			if(num[i] < num[j]){
 				temp = num[i];
 				num[i] = num[j];
 				num[j] = temp;  }
 			 		}
 		}
 	/*  同一数字があれば再帰  */
 	while(num[0] == num[1] || num[1] == num[2] || num[2] == num[3] ||
				 num[3] == num[4] || num[4] == num[5] || num[5] == num[6]){
	  printf("NG ");
	  keisan(x,y);
 	}for(int i = 0;i < x;i++){
 		printf("%d ",num[i]);
 	}printf("\n");
 }
 
  
結果:
NG 4 14 15 16 31 32 34      // NGの時、ここで終わらせたいのに繰り返すのはなぜですか?
NG NG NG NG NG 3 6 7 8 13 14 25