ไม่แต่ไม่ใช่เพราะเหตุผลที่คนอื่นให้ ความแตกต่างระหว่างการเรียกซ้ำและการเหนี่ยวนำไม่ใช่ว่าการเรียกซ้ำคือ "จากบนลงล่าง" และการเหนี่ยวนำคือ "จากล่างขึ้นบน" การเหนี่ยวนำการเป็น isomorphic กับสิ่งที่เรียกว่า "การเรียกซ้ำ primitve" แต่โดยทั่วไปเรียกซ้ำเป็นอย่างเคร่งครัดประสิทธิภาพมากขึ้นกว่าการเหนี่ยวนำ
ความแตกต่างระหว่างจากบนลงล่างและล่างขึ้นบนเป็นเรื่องเล็กน้อย - โปรแกรมเรียกซ้ำแบบดั้งเดิมจากบนลงล่างใด ๆ สามารถแปลงเป็นกลไกจากล่างขึ้นบนได้ ในความเป็นจริงหลักฐานใด ๆ โดยการเหนี่ยวนำสามารถกลายเป็นโปรแกรมซ้ำ ในกรอบของแคลคูลัสของการสร้างแบบอุปนัยหากคุณต้องการพิสูจน์ว่าจำนวนธรรมชาติทุกตัวเป็นจำนวนน้อยคุณจะต้องเขียนมันเป็นฟังก์ชันที่สร้างการพิสูจน์ว่า n นั้นมีความซับซ้อนโดยการโทรซ้ำเพื่อสร้างหลักฐานที่ n- 1 คือกบดาน
ปัจจัยสำคัญของการเหนี่ยวนำคือสิ่งที่กำหนดไว้ในแง่ของสิ่งเล็ก ๆ และพวกเขา "ก้น" หลังจากหลายขั้นตอนอย่างประณีต ตัวเลขธรรมชาติเป็นอุปนัยเพราะธรรมชาติทุกอย่างเป็น 0 หรือผู้สืบทอดของธรรมชาติที่เล็กกว่า รายการมีการเหนี่ยวนำเนื่องจากทุกรายการว่างเปล่าหรือสามารถแยกย่อย ("กางออก") ลงในองค์ประกอบและรายการขนาดเล็ก
บางครั้งโปรแกรมแบบเรียกซ้ำไม่ได้เขียนในแง่ของสิ่งเล็ก ๆ ตัวอย่างเช่นใช้ฟังก์ชัน Collatz นี้:
fun collatz(n)
if n <= 1
return 0;
else if n % 2 == 0
return 1 + collatz(n / 2)
else
return 1 + collatz(3 * n + 1)
end
ฟังก์ชั่นนี้ไม่ได้ใช้จากบนลงล่างหรือจากล่างขึ้นบนดังนั้นจึงไม่เหนี่ยวนำจำนวนธรรมชาติ
อาจมีคำสั่งให้ปฏิบัติเช่นนั้น แต่โดยส่วนใหญ่แล้วก็ไม่มีทาง ฟังก์ชั่นเหนือสตรีมที่ไม่มีที่สิ้นสุดเป็นตัวอย่างที่ดี ในความเป็นจริงลำธารเป็นตัวอย่างต้นแบบของประเภท "coinductive"
"พื้นฐานเชิงปฏิบัติสำหรับการเขียนโปรแกรมภาษา" ของ Bob Harper มีให้บริการออนไลน์ฟรีมีการแนะนำที่ดีเกี่ยวกับประเภทอุปนัย, เหรียญ, และแบบเรียกซ้ำ