몬테카를로 근사법을 사용하여 pi의 정밀도 (소수점 이하 자릿수)를 계산하는 함수를 만들려고합니다. 근사값을 파이의 리터럴 값과 비교하고 일치하지 않는 경우 재귀 적으로 많은 수의 재판으로 다시 시도하기 위해 함수를 재귀 호출합니다. 근사에 대한 임상 시험의 수를 제어하도록되어 변수 x가 1로 함수가 호출 될 때마다 초기화됩니다 때문에이 문제가있어Python - 변수 값을 변경하는 순환 함수 호출
def estimate_pi(precision):
x = 1
N_tot = 0
N_hits = 0
for i in range(0,trials*10**x):
if(inside_circle(random.random(),random.random())==True):
N_hits = N_hits+1
N_tot = N_tot+1
else:
N_tot = N_tot+1
result = 4.0*N_hits/N_tot
if compare_to_pi(result,precision)==True:
print(result)
else:
x++
estimate_pi(precision)
if trials>999999:
raise Error('approximation not converging to given precision')
print(result)
: 이것은 내가 지금까지 가지고있는 것입니다. 나는 무엇을해야할지 모르겠다. 제발 도와주세요!
평가판은 어디에 정의되어 있습니까? 글로벌 변수입니까? – UnsignedByte
'x'를 디폴트 값 1로 만든 다음'x + 1'을 재귀 호출에 전달하십시오. 초기 호출은 'x'에 대한 명시적인 인수없이 이루어질 수 있습니다. – chepner
그러나이 유형의 재귀는 일반 루프로 대체하는 것이 더 좋습니다. – chepner