새 학년, 오래된 바빌론 방법.
그럼,이 문제를 해결하지는 않지만 시작하겠습니다.
def sqrt_step(n, xk):
return 1/2.0 * (xk + float(n)/xk)
이의이
n = 100
를 설정하자
우리는 각 x_{k+1}
을 계산하는 작은 기능을 쓸 수 있습니다.
sqrt_step(100, 1) # returns 50.5
이제 함수에 몇 번 더 그 수를 공급하자
sqrt_step(100, 50.5) # 26.2
sqrt_step(100, 26.2) # 15.0
sqrt_step(100, 15.0) # 10.8
을 ...이 무한대 k
로 (10)에 수렴한다.
이제는 반복적으로 작업을 수행하는 방법이 있다면 k
번 ... 'f'로 시작하고 'ore'로 시작하는 세 글자 단어를 생각하고 있습니다 ...
당신은 문제를 해결하기 위해 정직한 노력했습니다
편집 - 나는 에 갈거야이 숙제 실천 운동 및 하지 할당 가정.
새로운 기능의 내부에서 sqrt_step
함수를 사용하면이 문제를 간단하게 해결할 수 있습니다.
def square_root(n, k):
xk = 1
for i in range(k):
xk = sqrt_step(n, xk) # or just: xk = 1/2.0 * (xk + float(n)/xk)
return xk
테스트 : : 다음과 같이 수행 할 수 있습니다
square_root(64, 100) # 8.0
square_root(144, 100) # 12.0
좀 더 고급 해짐에 따라, 당신은 당신이 변수를 덮어 명시 적으로 for
루프를 작성하지 않도록 할 수 있도록 기능적인 프로그래밍 기술에 대해 배우게됩니다. 그러나 지금은 가장 간단한 방법입니다.
[숙제에 관한 일반적인 지침] (http://meta.stackexchange.com/a/10812)에 따르면 문제를 먼저 해결하기 위해 ** 성실하게 시도하고 ** 귀하의 질문에. – ahoffner