2012-04-24 1 views
1

다음과 같이 내가하는 기능을 가지고있다 내 질문 :
는 하나 개의 값 이상 재귀,하지만 길을 따라 목록을 저장

def myfunc(a): 
    b=[] 
    b.append(a) 
    return myfunc(a-1), b* 

* = 나는이
가능한 모든 방식이 제 기능을 깰 것 알고 있습니다 내 기능이 계속 실행되는 동안 b을 사용 된 a 값으로 업데이트 할 수 있습니까? 질문과 관련된 코드는 최대 값입니다. proble. 그래서 나는 가중치와 가치의 목록과 최대치를 가지고 있습니다. 허용 중량. 내 함수는 최대의 문제는 찾지 만, 나는 거기에 가기 위해 어떤 값을 사용하는지보고 싶다. 즉, w = [1,2,3] v = [4,7,2] 최대 가중치 = 3, 최대 값 = 11입니다. 제 기능을 사용하기 위해 사용되는 가중치와 같은 목록입니다. 1,2] 및 사용 된 값 = [4,7]. 실제 코드가 게시되지 않아 죄송합니다. 사이트에서 허용하지 않습니다.

+0

게시물 형식을 멋지게 지정하는 방법을 배우려면 [형식 가이드] (http://stackoverflow.com/editing-help)를 확인하십시오. 또한 표시하려는 코드가 있고 질문을 다시 편집하여 추가하는 경우 필요에 따라 올바르게 형식을 지정할 수 있습니다. –

답변

0

말은 이렇습니다.

def myfunc(a): 
    if a == 0: 
     return [a] 
    return myfunc(a-1) + [a] 

myfunc(5) 

> [0, 1, 2, 3, 4, 5] 
+0

종류입니다. 어쨌든 내가 위에있는 것과 더 비슷하게 보이도록 포맷 할 수 있습니까? 내가 작업하고있는 문제는 훨씬 더 복잡하고 그 라인에있는 것이 훨씬 도움이 될 것입니다. 기본적으로 값을 가진 저장을 위해 독점적으로 사용하는 목록을 반환하는 기능은이 경우 재귀를 위해 사용합니다. 그렇지 않다면 나는 이것을 시도하고 놀아야한다. – user1352683

+1

정확히'myfunc()'에서 반환되어야하는 것은 무엇입니까? 두 번째 요소가 목록 인 두 값의 튜플이지만 첫 번째 요소는 무엇입니까? 질문의 재귀가 잘못 정의되어 있습니다. 기본 사례가없는 경우도 있습니다. –

+0

이 용어에 대해 잘 모르기 때문에 사과드립니다. 그러나이 사이트에서 게시를 허용하지 않는 실제 코드 작업은 최대 가치 문제입니다. 그래서 나는 매번 max (value 1, value 2)를 반환 할 것입니다. 내 기본 사례는 최대 2 개 목록, 가중치 및 값입니다. 체중 int. 여러 데이터 목록을 반환하려고합니다. I.E. 현재 사용 된 가중치 목록 및 값 시도 목록, 현재 최대 목록 요법 ... 명확성 부족에 대해 사과드립니다. – user1352683

2

기본 인수를 사용하는 것이 좋습니다.

def myfunc(a, lst=None): 
    if lst is None: 
     lst = [] 
    lst.append(a) 
    if a > 0: 
     myfunc(a-1, lst) 
    return lst 

print(myfunc(5)) # prints: [5, 4, 3, 2, 1, 0] 
+0

이것은 실제로 매우 도움이되었습니다. 나는 처음 몇 시간 동안이 옵션을 놓쳤다는 것을 믿을 수 없습니다. – user1352683