반복없이 1-10의 난수로 배열을 채우려고합니다. 나는 재귀로 그것을하려고 노력한다. 나는 재귀와 함께 노력하고있다. (여기에는 두 가지가있다. 어느쪽으로 든 행운이 없다.)반복없이 무작위로 배열 채우기
1 :
static int reco(int arr,int[] times)
{
Random rnd = new Random();
arr = rnd.Next(1, 11);
return times[arr] > 0 ? reco(arr, times) : arr;
}
static void Main(string[] args)
{
int i = 0;
int[] arr = new int[10];
int[] times = new int[11];
Random rnd = new Random();
for (i = 0; i < 10; i++)
{
arr[i] = rnd.Next(1, 11);
times[arr[i]]++;
if (times[arr[i]] > 0)
arr[i] = reco(arr[i], times);
}
2 : I가 작동하지 boths,이 개 코드가
static int reco(int arr,int[] times)
{
Random rnd = new Random();
arr = rnd.Next(1, 11);
if (times[arr] > 0)
return reco(arr, times);
else
return arr;
}
static void Main(string[] args)
{
int i = 0;
int[] arr = new int[10];
int[] times = new int[11];
Random rnd = new Random();
for (i = 0; i < 10; i++)
{
arr[i] = rnd.Next(1, 11);
if (times[arr[i]] > 0)
arr[i] = reco(arr[i], times);
times[arr[i]]++;
}
}
분석 결과 "작동하지 않음"이라고 설명하십시오. –
배열 0..N에 임의의 순서로 0.N을 채우는 것이 일반적인 경우, 배열을 0.N으로 채우고 배열을 반복하여 각각을 교환하는 것입니다 배열에서 임의의 위치에있는 또 다른 값 - 예 : 셔플. –