Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การคำนวณหมายเลข Ackerman สำหรับอินพุตใน JavaScript


ฟังก์ชันแอคเคอร์มันน์

ฟังก์ชัน Ackermann เป็นตัวอย่างคลาสสิกของฟังก์ชันแบบเรียกซ้ำ โดยเฉพาะอย่างยิ่งเนื่องจากไม่ใช่ฟังก์ชันแบบเรียกซ้ำดั้งเดิม มันเติบโตอย่างรวดเร็วในมูลค่า เช่นเดียวกับขนาดของโครงสร้างการโทร

ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้ตัวเลขสองตัว m และ n เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์ที่สอง ฟังก์ชันของเราควรส่งคืนหมายเลข 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));