반복 과 무제한 메모리로 재귀를 대체 할 수 있습니다 .
반복 (예 : while 루프)과 유한 한 양의 메모리 만있는 경우 유한 한 오토 마톤 만 있으면됩니다. 유한 한 양의 메모리를 사용하면 계산에는 유한 한 수의 단계가 있으므로 유한 한 오토 마톤으로 모든 단계를 시뮬레이션 할 수 있습니다.
무한한 메모리가 있으면 거래가 변경됩니다. 이 무한한 기억은 많은 표현력을 가질 수있는 많은 형태를 취할 수 있습니다. 예를 들어, 튜링 머신은 간단하게 유지합니다. 단일 테이프가 있고 컴퓨터는 한 번에 한 단계 씩 테이프에서 앞뒤로 만 이동할 수 있지만 재귀 기능으로 수행 할 수있는 모든 작업을 수행하기에 충분합니다.
튜링 머신은 필요에 따라 확장되는 추가 스토리지를 갖춘 이상적인 컴퓨터 모델 (유한 상태 머신)로 볼 수 있습니다. 테이프에 한정된 경계가있을뿐만 아니라 입력이 주어진 경우에도 필요한 테이프의 양을 확실하게 예측할 수없는 것이 중요합니다. 입력에서 필요한 테이프의 양을 예측 (예 : 계산) 할 수있는 경우 최대 테이프 크기를 계산 한 다음 현재 유한 테이프를 포함한 전체 시스템을 유한 상태 머신으로 처리하여 계산을 중지할지 여부를 결정할 수 있습니다. .
컴퓨터로 튜링 머신을 시뮬레이션하는 다른 방법은 다음과 같습니다. 테이프의 시작 부분을 메모리에 저장하는 컴퓨터 프로그램으로 Turing 기계를 시뮬레이션하십시오. 계산이 메모리에 맞는 테이프 부분의 끝에 도달하면 컴퓨터를 더 큰 컴퓨터로 교체하고 계산을 다시 실행하십시오.
이제 컴퓨터를 사용하여 재귀 계산을 시뮬레이션한다고 가정하십시오. 재귀 함수를 실행하는 기술은 잘 알려져 있습니다. 각 함수 호출 에는 스택 프레임 이라는 메모리가 있습니다. 결정적으로 재귀 함수는 변수를 전달하여 여러 호출을 통해 정보를 전파 할 수 있습니다. 컴퓨터에서의 구현 측면에서 볼 때 이는 함수 호출이 ( * ) * 부모 호출 의 스택 프레임에 액세스 할 수 있음을 의미합니다 .
컴퓨터는 유한 상태 머신 (엄청나게 많은 상태를 가지고 있지만 여기서 계산 이론을 수행하고 있기 때문에 중요한 것은 유한하다는 것) 인 프로세서는 유한 메모리와 결합 된 프로세서입니다. 마이크로 프로세서는 하나의 거대한 while 루프를 실행합니다. "전원이 켜져있는 동안 메모리에서 명령을 읽고 실행합니다." (실제 프로세서는 그보다 훨씬 복잡하지만 계산할 수있는 것, 속도 및 편리성에 영향을 미치지 않습니다.) 컴퓨터는 반복을 제공하기 위해이 while 루프만으로 재귀 함수를 실행할 수 있습니다. 마음대로 메모리 크기를 늘리는 기능을 포함하여 액세스 메모리에 액세스합니다.
재귀를 기본 재귀로 제한하면 반복을 경계 반복으로 제한 할 수 있습니다 . 즉, 예기치 않은 실행 시간으로 while 루프를 사용하는 대신 루프 시작 부분에 반복 횟수가 알려진 루프에 for 루프를 사용할 수 있습니다. 반복 횟수는 프로그램 시작 부분에 알려지지 않았을 수 있습니다. 자체 루프는 이전 루프에 의해 계산 될 수 있습니다.
여기서는 증거를 스케치하지는 않지만 기본 재귀에서 전체 재귀로, for 루프에서 while 루프로 이동하는 것 사이에는 직관적 인 관계가 있습니다. 두 경우 모두 사전에 알지 못합니다. 중지. 완전 재귀를 사용하면 최소화 연산자를 사용하여 조건을 만족하는 매개 변수를 찾을 때까지 계속 진행합니다. while 루프의 경우 루프 조건이 충족 될 때까지 계속 진행하면됩니다.
for
while
n