현재 Simon Thompson의 The Craft of Functional Programming을 읽고 있는데 재귀를 설명 할 때 그는 원시 재귀이라는 재귀를 언급합니다.원시 재귀는 "정상"재귀와 어떻게 다릅니 까?
이 유형의 재귀가 "일반적인"재귀 함수와 다른 점을 설명해주십시오. 전원을 벗겨 의해
power2 n
| n == 0 = 1
| n > 0 = 2 * power2(n - 1)
현재 Simon Thompson의 The Craft of Functional Programming을 읽고 있는데 재귀를 설명 할 때 그는 원시 재귀이라는 재귀를 언급합니다.원시 재귀는 "정상"재귀와 어떻게 다릅니 까?
이 유형의 재귀가 "일반적인"재귀 함수와 다른 점을 설명해주십시오. 전원을 벗겨 의해
power2 n
| n == 0 = 1
| n > 0 = 2 * power2(n - 1)
단순한 대답은 원시적 인 재귀 함수는 다른 원시적 인 재귀 함수와 자연수의 구조에 대한 재귀로 정의되는 것입니다. 자연 번호는이 같은 개념이다 : 원시 재귀 함수의
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
프리미티브 재귀 기능이 정지 문제로 (수학자) 자연적인 반응이다 : 여기서
는 (하스켈) 원시 순환 기능의 예 임의의 무한 자기 재귀를 수행합니다.는
f n
| n is an odd perfect number = true
| otherwise = f n+2
f를 종료 않는 "악의"기능을 고려? 이상한 완벽한 숫자가 있는지없는 열린 문제를 해결하지 않고는 알 수 없습니다. 중단 문제를 어렵게 만드는 이러한 기능을 만드는 기능입니다.
구조체로의 기본 재귀는 그렇게 할 수 없습니다. 요점은 "f n + 2"를 금지하는 것입니다. 가능한 한 유연하게 - 원시적 일 수는 없습니다 - 재귀 적으로 f (n)을 f (n + 1)로 정의하십시오.
함수가 원시적 인 재귀 적이 아니기 때문에 그것이 종료되지 않는다는 것을 의미하지는 않습니다. 애커 만의 기능은 표준적인 예입니다.
그럼 잘 정의 된 재귀와 원시 재귀 사이의 차이점은 무엇입니까? – Hibou57
만 할에 의해 구현 될 수있는 재귀 함수 루프 원시 재귀 함수는 다음과 같습니다
또 다른 예는 피보나치 수 있습니다.
그냥 참고하시기 바랍니다 (이 기사가 아닌 다른 게시물을 기반로 함), http://careers.stackoverflow.com/ –
에서 CV를 게시 할 수 있습니다. 루프 변수가 엄격하게 감소한 루프를 수행하십시오. – ARi
... 매우 도움이됩니다. -_- –
일부 섹션을 복사하여 붙여 넣으시겠습니까? 당신이 이해할 수없는 원시 재귀의 어떤면이 있다면, 더 나은 대답을 제공 할 수 있습니다. 그러나 "일반적인 재귀와 어떻게 다른가"는 위키피디아의 정의를 살펴봄으로써 대답 할 수 있습니다. –
OP는 여기서 뭔가를 배우려고합니다. 수학 선생님이라면 학생을 백과 사전으로 안내 하시겠습니까? –