2009-11-11 7 views

답변

8

단순한 대답은 원시적 인 재귀 함수는 다른 원시적 인 재귀 함수와 자연수의 구조에 대한 재귀로 정의되는 것입니다. 자연 번호는이 같은 개념이다 : 원시 재귀 함수의

power2 Zero = Succ Zero -- (Succ 0) == 1 
power2 (Succ n) = 2 * power2 n -- this is allowed because (*) is primitive recursive as well 

구성 : 우리는 귀하의 예를 작성할 수

f Zero  = ... 
f (Succ n) = ... 

:

data Nat 
    = Zero 
    | Succ Nat -- Succ is short for 'successor of', i.e. n+1 

이이처럼 재귀 수 있음을 의미 또한 원시적 재귀 적이다.

fib    Zero = Zero 
fib   (Succ Zero) = (Succ Zero) 
fib (Succ [email protected](Succ n' )) = fib n + fib n' -- addition is primitive recursive 
-3
+0

... 매우 도움이됩니다. -_- –

+2

일부 섹션을 복사하여 붙여 넣으시겠습니까? 당신이 이해할 수없는 원시 재귀의 어떤면이 있다면, 더 나은 대답을 제공 할 수 있습니다. 그러나 "일반적인 재귀와 어떻게 다른가"는 위키피디아의 정의를 살펴봄으로써 대답 할 수 있습니다. –

+5

OP는 여기서 뭔가를 배우려고합니다. 수학 선생님이라면 학생을 백과 사전으로 안내 하시겠습니까? –

7

프리미티브 재귀 기능이 정지 문제로 (수학자) 자연적인 반응이다 : 여기서

는 (하스켈) 원시 순환 기능의 예 임의의 무한 자기 재귀를 수행합니다.

f n 
    | n is an odd perfect number = true 
    | otherwise = f n+2 

f를 종료 않는 "악의"기능을 고려? 이상한 완벽한 숫자가 있는지없는 열린 문제를 해결하지 않고는 알 수 없습니다. 중단 문제를 어렵게 만드는 이러한 기능을 만드는 기능입니다.

구조체로의 기본 재귀는 그렇게 할 수 없습니다. 요점은 "f n + 2"를 금지하는 것입니다. 가능한 한 유연하게 - 원시적 일 수는 없습니다 - 재귀 적으로 f (n)을 f (n + 1)로 정의하십시오.

함수가 원시적 인 재귀 적이 아니기 때문에 그것이 종료되지 않는다는 것을 의미하지는 않습니다. 애커 만의 기능은 표준적인 예입니다.

+0

그럼 잘 정의 된 재귀와 원시 재귀 사이의 차이점은 무엇입니까? – Hibou57

2

만 할에 의해 구현 될 수있는 재귀 함수 루프 원시 재귀 함수는 다음과 같습니다

또 다른 예는 피보나치 수 있습니다.

+1

그냥 참고하시기 바랍니다 (이 기사가 아닌 다른 게시물을 기반로 함), http://careers.stackoverflow.com/ –

+0

에서 CV를 게시 할 수 있습니다. 루프 변수가 엄격하게 감소한 루프를 수행하십시오. – ARi

관련 문제