저는 파이썬을 처음 접했고 Stern-Brocot Sequence의 n 번째 항을 알아 내기위한 프로그램을 만들려고했습니다. (당신은 그것을 찾아 볼 수 있고 이것이 제 기능을 SBSeq라고 부르는 이유입니다). 어떤 이유로 작동하지 않으며 다음과 같은 오류가 발생합니다.
File "C:/Python27/Factorials.py", line 6, in SBSeq
return ((n%2)*SBSeq(ceil(n/2)-1))+SBSeq(ceil(n/2))
결국 이것은 다음과 같습니다.
File "C:/Python27/Factorials.py", line 5, in SBSeq
if n == 1: return 1
RuntimeError: maximum recursion depth exceeded in cmp
이것은 원래 코드입니다.
import math
from math import ceil
def SBSeq(n):
if n == 1: return 1
return ((n%2)*SBSeq(ceil(n/2)-1))+SBSeq(ceil(n/2))
어떤 도움을 주시면 감사하겠습니다!
들여 쓰기 문제가 실제 문제가 아니라고 가정 할 때 문제는 1
재귀 적으로 이동할 때 숫자가 아래에 도달 할 수 있고 , 아래에 도달하면 1
(즉 0
, n에 도달하면 ) 종료하지 않고 계속해서 SBSeq를 반복적으로 호출한다는 것입니다.
재귀 함수 시작 조건은이어야합니다 if n <= 1 : return 1
.
코드-
def SBSeq(n):
if n <= 1: return 1
return ((n%2)*SBSeq(ceil(n/2)-1))+SBSeq(ceil(n/2))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다