중첩 된 for 루프를 실행하여 동일한 값을 갖는 카운터를 피하는 효율적인 방법이 있습니까? 분명히, 나는 아래 if와 같은 if 문을 실행할 수 있지만 더 효율적인 방법이 있는가?변수를 반복하지 않고 루프에 중첩 실행 중입니까?
for i = 1 to 20:
for j = 1 to 20:
if (i == j):
continue
else:
for k = 1 to 20:
if (i == k) or (j == k):
continue
else:
do something useful with these different numbers
EDIT : 변수 교체 없으므로 [2, 1, 0]으로 다르다 [0, 1, 2]. "유용한 일을하라"는 숫자를 추가, 제곱 및 제곱에 대한 6 가지 수치 검사가됩니다.
감사하고, 아마도 비정상적인 의사 코드 (및 상수 편집)에 대해 사과드립니다.
if ('i! = j'와'(i! -k)'및 (j! = k)'로직을 뒤집어서 else 섹션을 제거 할 수 있습니다. . – fvu
루프의 중첩은 성능에 영향을 미칠 수 있지만 (분기 예측 및 메모리 지역성에 대한 영향으로 인해) "다른 숫자로 유용한 작업 수행"내부에 무엇이 있는지에 따라 달라집니다. – Brian