2014-10-19 2 views
-2

중첩 루프 또는 재귀 함수 사용시 출력의 차이점은 무엇입니까? 조건을 고려하면서 조합을 생성하는 데 가장 적합한 것은 무엇입니까?중첩 루프와 재귀 함수의 차이점은 무엇입니까?

+0

해결하려는 특정 문제에 따라 다릅니다. 항상 다른 시간 대신에 하나를 사용하지는 않을 것입니다. 참고 "[재귀 이해] (http://stackoverflow.com/questions/717725/understanding-recursion)" –

답변

1

재귀 알고리즘은 동일한 함수 (재귀) 내에서 함수를 호출합니다. 재귀를 수행할지 여부는 일부 조건을 기반으로합니다.

function foo() 
    { 
      ?/ do work 
      if(condition) 
        foo(); 
    } 

반복 알고리즘은 일반적으로 함수를 몇 번 (n) 호출합니다. 일부 데이터 조각이 조작을 반복 할 필요가 반복 여부의 상태가 이전의 조작에 의존하는 경우

function foo() 
    {} 

    for(int i = 0; i < n; i++) 
      foo(); 

재귀 함수

이 일반적으로 사용된다. 수학에서 잘린 무한 수열을 계산하는 것이 이것의 한 예입니다.

일반적으로 조건이 이전 조작에 종속되지 않은 경우 반복 함수가 사용됩니다. 행렬을 반전하려면 미리 정의 된 n이 있어야합니다.

대부분의 용도로이 방법을 사용할 수 있지만 일반적으로 특정 경우에 대해 다른 방법보다 쉬운 방법이 있습니다.

재귀 호출 스택 오버플로를 알고 있어야합니다. 알고리즘이 수렴 될 것이라는 것을 보증 할 수있는 경우에만 사용하는 것이 가장 좋습니다.

0

반복 및 반복 (반복)은 일반적인 의미로는 비교할 수없는 다양한 전략입니다. 일부 알고리즘의 경우 반복 및 재귀 버전 (계승 또는 피보나치 수 등)이있을 수 있으며 일부는 다른 하나보다 직관적 일 수 있습니다 (예 : 트리 워킹의 재귀).

알고리즘이 따르는 전략에 관계없이 출력은 동일해야하며 그렇지 않으면 다른 알고리즘을 구현했을 것입니다.

결론은 실제로 어떤 알고리즘을 사용할 것인가에 달려 있습니다.

1

재귀는 루프를 수행하는 또 다른 방법으로 볼 수 있습니다. 주된 장점은 코드 가독성입니다.이 경우 Stackoverflow question에서 볼 수 있습니다.이 경우 중첩 루프가 많이있을 때입니다.

그러나 파이썬 (1000)에는 작은 재귀 제한이 있으므로주의하십시오. 당신은 this pdf을 확인, 루프 대 재귀 다른 경우에 대한 개요

>>>import sys 
>>>print sys.getrecursionlimit() 
1000 

을 입력하여 확인할 수 있습니다. 그러나 this Stackoverflow answer에 명시된대로 Python에서 순전히 반복적 인 구성을 고수해야합니다.

관련 문제