Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 입력에 대한 Ackerman 수 계산

<시간/>

아커만 함수

Ackermann 함수는 재귀 함수의 고전적인 예입니다. 특히 기본 재귀 함수가 아니기 때문에 주목할 만합니다. 호출 트리의 크기와 마찬가지로 가치가 매우 빠르게 증가합니다.

문제

첫 번째와 두 번째 인수로 m과 n이라는 두 개의 숫자를 취하는 JavaScript 함수를 작성해야 합니다. 우리의 함수는

에 의해 정의된 Ackermann 수 A(m,n)을 반환해야 합니다.
A(m,n) = n+1 if m=0
A(m,n) = A(m-1,1) if m>0 , n=0
A(m,n) = A(m-1,A(m,n-1)) if m,n > 0
인 경우

예시

const m = 12;
const n = 11;
const ackermann = (m, n) => {
   if (m === 0) {
      return n+1
   }
   if (n === 0) {
      return ackermann((m - 1), 1);
   }
   if (m !== 0 && n !== 0) {
      return ackermann((m-1), ackermann(m, (n-1)))
   }
}
console.log(ackermann(m, n));