다음 숙제에 대한 해독을 시도하고 있습니다. 내 코드는 190으로 평가되지만 대신 114로 평가됩니다. 따라서 코딩 요구 사항을 이해하고 있다고 생각하지 않습니다.Python에서 목표로하는 Collatz 추측에 대한 이해
Collatz 추측은 그 동작이 세계 최고의 수학자는 여전히 이해하지 않도록 예측할 수있는 간단한 계산 과정의 예입니다.
의 결과를 정수n
소요 짝수 개의n
경우하여 나누고 승산 (3)에 의한n
하고 추가 (위키 피디 페이지 위 에 정의)f(n)
가n
홀수이면 간단한 함수를 고려 . 추측은 함수f
에 대한 호출 수가 증가함에 따라f(f(f(...f(f(n)))))
형태의 표현식 값을 연구하는 것을 포함합니다. 추측은 음이 아닌 정수n
,f
n
의 반복 응용 프로그램에 대한 항상이 질문에 대한 당신의 작업은 파이썬 에 Collatz 기능f
을 구현하기 위해 1입니다 포함 정수의 순서를 얻을 수 있다는 것입니다 . 구현의 핵심은 이
n
이 짝수 또는 홀수인지 여부를 확인하는 테스트를 작성하는 것입니다. 을 2로 나눌 때 나머지가 인지 여부를 확인하는 것은 0 또는 1입니다. 힌트 : 나머지 부분은 파이썬에서%
표현n % 2
을 통해%
을 사용하여 계산할 수 있습니다. 참고로f
을 계산할 때는 정수 나누기//
을 사용해야합니다.
f
을 구현했으면 표현식f(f(f(f(f(f(f(674)))))))
에서 구현을 테스트하십시오. 이 표현식은 에서190
으로 평가됩니다.
from __future__ import division
def collatz(n):
l = []
l.append(n)
while n != 1:
if n % 2 == 0:
n = n // 2
l.append(n)
else:
n = (3*n) + 1
l.append(n)
return l
print len(collatz(674))
당신은'f'를 구현하지 않았지만 완전히 다른 (관련 있음에도 불구하고) 기능을 구현했습니다. 'f'는 전체 시퀀스가 아니라 다음 시퀀스를 계산해야합니다. –