2017-04-13 1 views
-4

코드에 내가 찾을 수없는 오류가 있습니다. 코드와파이썬 문법 실수가 잘못되었습니다. 구문

def cut_rod(p, n): 
    if (n == 0): 
     return 0 
    q = p[n]; 
    for i in range(1,n): 
     q = max(q, p[i] + cut_rod(p, n - i)); 
     return q; 
    return; 

# your code goes here 
p1 = [1, 5, 8, 9, 10, 17, 17, 20, 24, 30]; 
n1 = len(p1); 
print n1; 
a = cut_rod(p1,n1); 
+4

어떻게 오류가 알고 않습니다

n1 = len(p1) 

이 시도? 오류 추적 표시를 게시하면 사람들이 귀하를 도울 수 있습니다! –

+0

파이썬은 0부터 시작하는 색인을 사용합니다. 즉, 목록의 첫 번째 항목은 1이 아니라 인덱스 0에 있음을 의미합니다. 'n1 = len (p1)'을 사용하면 해당 색인의 항목은 실제로 목록의 끝 바로 다음에 존재하지 않습니다 (존재하지 않음). 'n1 = len (p1) - 1'을 사용해야합니다. – zondo

+0

안녕하세요, zondo, 저는 Python을 처음 사용합니다. 오류는 "RuntimeError : 최대 재귀 깊이 초과"라고 표시합니다. 답장을 보내 주셔서 감사합니다. – yx131

답변

0

하나의 문제는 정의에 의해 인덱스 n1이 목록에 존재하지 않는다는 것입니다. 파이썬리스트 인덱스는 0부터 시작하므로 길이가 3 인리스트는 인덱스 0-2 만 갖습니다. 대신이의

mylist = ["a", "b", "c"] 
print(len(mylist)) 
# 3 
print(mylist[3]) 
# IndexError! 
print(mylist[2]) 
# "c" 

:

n1 = len(p1) - 1 
+0

고마워. 나는 이것을 시도 할 것이다. – yx131

+0

도움이되기를 바랍니다. 일반적으로 질문에 더 많은 정보를 포함할수록 좋습니다. Stackoverflow는 [좋은 질문을 작성하는 방법] (https://stackoverflow.com/help/how-to-ask)에 대한 매우 자세한 지침을 제공합니다. –