2014-07-24 5 views
-3

그래서 재귀를 통해 특정 값을 복제하려고합니다.자바에서 재귀 적으로 특정 값을 복제하면 stackoverflow 오류가 계속 발생합니까?

예 : 노드 4.0 목록 8.0 4.0, 10.0 4.0,4.0 반환, 8.0 4.0, 4.0, 10.0

void duplicate(double duplicateValue){ 
    duplicate(duplicateValue, head); 
    } 

    private void duplicate(double duplicateValue, Node p){ 
    if(p.next != null){ 
     if(p.value == duplicateValue){ 
     p.next = new Node(duplicateValue, p.next); 
     } 
    duplicate(duplicateValue, p.next);} 
    } 
+4

그리고 질문은 무엇입니까? –

+1

어떻게 재귀가 멈출 것으로 예상합니까? 당신은 무조건 * 재귀하고 있습니다. –

+0

때로는 너무 재미있어 멈출 때를 모른다. 그런 다음 스택 공간이 부족하여 잠시 앉아 있어야합니다. –

답변

-1

어떻게 실행 적 (더블) 중복 둡니다합니까?

답변은 다음과 같습니다. 이제까지. 스택이 다 사용될 때까지 스스로를 호출합니다. 결국 어디에서 다시 돌아올 지 조건이 필요합니다.

+0

첫 번째 메서드 또는 두 번째 메서드에서 조건을 넣으십시오. – bolonomicz

+0

p.next == null을 확인할 수 있지만 void 메서드이며 아무 것도 반환 할 수 없습니다. – bolonomicz

+0

두 번째입니다. 그것은 무엇이든 상관없이 항상 자신을 부릅니다. –

관련 문제