kim123mk   2년 전

while문으로 이항계수를 작성하는데 안되어서 for문으로 작동해봤더니 그거는 작동을 합니다.
두 코드의 차이점은 for이냐 while이냐 밖에 없는데 도대체 어느 부분에서 실패와 성공이 나뉘는지 도저히 모르겠습니다.

dk10211   2년 전

while문 반례는 10,6 이고

값이 살짝 짤려서 그런거니까 int()대신 round()해주면 맞아요

bupjae   2년 전

5번째 줄은 작은 수를 먼저 나누고 큰 수를 나중에 나눕니다.

12번째 줄은 큰 수를 먼저 나누고 작은 수를 나중에 나눕니다.

엄밀히 말하면 5번째 줄 및 12번째 줄 모두 실수 연산이지만, 5번째 줄은 모든 계산 결과가 정수가 나오는반면, 12번째 줄은 계산 결과 도중 정수가 아닌 수가 나올 수 있습니다.

일단 계산 결과가 정수가 아닐 경우, 그 이후의 계산은 실수 연산에 의한 오차가 발생할 수 있습니다.

   

N = 10, K = 4 일 때

6번째 줄에서 result 는 정확히 210.0 이고 int(result) 의 결과는 210 입니다.

반면 14번째 줄에서 result 는 209.99999999999997 이 나왔으며, int(result) 의 결과는 209 가 됩니다.    

댓글을 작성하려면 로그인해야 합니다.