มันเป็นไปได้ที่จะเปลี่ยนการเรียกซ้ำโดยย้ำบวกหน่วยความจำมากมาย
หากคุณมีการวนซ้ำ (พูดในขณะที่ลูป) และจำนวนหน่วยความจำที่ จำกัด เท่านั้นสิ่งที่คุณมีก็คือระบบออโตเมติก จำกัด ด้วยจำนวนหน่วยความจำที่ จำกัด การคำนวณมีจำนวนขั้นตอนที่เป็นไปได้ จำกัด ดังนั้นจึงเป็นไปได้ที่จะจำลองพวกมันทั้งหมดด้วยออโตเมติก จำกัด
การมีหน่วยความจำที่ไม่มีขอบเขตเปลี่ยนแปลงการจัดการ หน่วยความจำที่ไม่ได้ จำกัด นี้สามารถมีได้หลายรูปแบบซึ่งมีพลังงานเทียบเท่ากัน ตัวอย่างเช่นเครื่องทัวริงทำให้มันง่าย: มีเทปเดียวและคอมพิวเตอร์สามารถเลื่อนไปข้างหน้าหรือข้างหลังบนเทปทีละขั้นตอน - แต่ก็เพียงพอที่จะทำทุกสิ่งที่คุณสามารถทำได้ด้วยฟังก์ชั่นวนซ้ำ
เครื่องจักรทัวริงสามารถมองเห็นได้ในรูปแบบอุดมคติของคอมพิวเตอร์ (เครื่องจักรสถานะ จำกัด ) พร้อมที่เก็บข้อมูลเพิ่มเติมที่เพิ่มขึ้นตามความต้องการ โปรดทราบว่ามันสำคัญอย่างยิ่งที่ไม่เพียง แต่จะไม่มีขอบเขต จำกัด บนเทป แต่ถึงแม้จะได้รับอินพุตคุณก็ไม่สามารถคาดเดาได้ว่าจะต้องใช้เทปมากแค่ไหน หากคุณสามารถทำนาย (เช่นคำนวณ) จำนวนเทปที่ต้องการจากอินพุตคุณสามารถตัดสินใจได้ว่าการคำนวณจะหยุดโดยการคำนวณขนาดเทปสูงสุดแล้วจัดการกับระบบทั้งหมดรวมทั้งเทป จำกัด ในขณะนี้เป็นเครื่องสถานะ จำกัด .
อีกวิธีในการจำลองเครื่องทัวริงกับคอมพิวเตอร์มีดังนี้ จำลองเครื่องทัวริงกับโปรแกรมคอมพิวเตอร์ที่เก็บจุดเริ่มต้นของเทปในหน่วยความจำ หากการคำนวณถึงจุดสิ้นสุดของส่วนของเทปที่พอดีกับหน่วยความจำให้เปลี่ยนคอมพิวเตอร์ด้วยคอมพิวเตอร์ขนาดใหญ่กว่าและรันการคำนวณอีกครั้ง
ตอนนี้สมมติว่าคุณต้องการจำลองการคำนวณแบบเรียกซ้ำด้วยคอมพิวเตอร์ เทคนิคสำหรับการดำเนินการ recursive ฟังก์ชันเป็นที่รู้จักกันดี: แต่ละฟังก์ชั่นการโทรมีชิ้นส่วนของหน่วยความจำที่เรียกว่ากองกรอบ ฟังก์ชั่นแบบเรียกซ้ำสามารถถ่ายทอดข้อมูลผ่านการเรียกหลายครั้งโดยส่งผ่านตัวแปรไปรอบ ๆ ในแง่ของการใช้งานบนเครื่องคอมพิวเตอร์ที่หมายถึงว่ามีการเรียกฟังก์ชั่นอาจเข้าถึงกองกรอบของ (Grand-) *โทรปกครอง
คอมพิวเตอร์เป็นตัวประมวลผล - เครื่องจักรสถานะ จำกัด (มีสถานะเป็นจำนวนมาก แต่เรากำลังทำทฤษฎีการคำนวณที่นี่ดังนั้นสิ่งที่สำคัญก็คือมัน จำกัด ) - ควบคู่กับหน่วยความจำ จำกัด ไมโครโปรเซสเซอร์เรียกใช้ยักษ์ตัวหนึ่งขณะที่วนรอบ:“ ขณะที่เปิดเครื่องอยู่ให้อ่านคำสั่งจากหน่วยความจำและดำเนินการ” (ตัวประมวลผลที่แท้จริงนั้นซับซ้อนกว่านั้นมาก แต่ก็ไม่ส่งผลกระทบต่อสิ่งที่พวกเขาสามารถคำนวณได้ว่ามันจะทำได้เร็วและสะดวกเพียงใด) คอมพิวเตอร์สามารถเรียกใช้ฟังก์ชันแบบเรียกซ้ำด้วยวิธีนี้ในขณะที่วนซ้ำเพื่อให้ซ้ำ เข้าถึงหน่วยความจำรวมถึงความสามารถในการเพิ่มขนาดของหน่วยความจำที่ต้องการ
หากคุณ จำกัด การเรียกซ้ำเพื่อเรียกซ้ำดั้งเดิมแล้วคุณสามารถ จำกัด การทำซ้ำที่จะจำกัดการทำซ้ำ นั่นคือแทนที่จะใช้ในขณะที่ลูปที่มีเวลาทำงานที่ไม่สามารถคาดเดาได้คุณสามารถใช้สำหรับลูปที่ทราบจำนวนการวนซ้ำในตอนต้นของลูป จำนวนการทำซ้ำอาจไม่เป็นที่รู้จักในช่วงเริ่มต้นของโปรแกรม: สามารถคำนวณได้เองโดยลูปก่อนหน้า
ฉันจะไม่แม้แต่จะร่างหลักฐานที่นี่ แต่มีความสัมพันธ์แบบสัญชาตญาณระหว่างการจากการเรียกซ้ำแบบดั้งเดิมไปเป็นการเรียกซ้ำแบบเต็มและจากการวนซ้ำไปจนถึงขณะที่ลูป: ทั้งสองกรณีมันเกี่ยวข้องกับการไม่รู้ล่วงหน้าเมื่อคุณ หยุด. ด้วยการเรียกซ้ำทั้งหมดซึ่งจะดำเนินการกับตัวดำเนินการย่อเล็กสุดซึ่งคุณจะดำเนินการต่อไปจนกว่าคุณจะพบพารามิเตอร์ที่ตรงตามเงื่อนไข ในขณะที่ลูปนี่ทำได้โดยการไปเรื่อย ๆ จนกว่าสภาพลูปจะเป็นที่พอใจ
¹ ลูปในภาษา C-like สามารถทำซ้ำได้ไม่ จำกัด เช่นเดียวกับการประชุมเพื่อ จำกัด การทำซ้ำ เมื่อผู้คนพูดถึง“ สำหรับลูป” ในทฤษฎีการคำนวณนั่นหมายถึงเฉพาะลูปที่นับจาก 1 ถึง (หรือเทียบเท่า) for
while
n