ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ

สารบัญ:

ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ
ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ

วีดีโอ: ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ

วีดีโอ: ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ
วีดีโอ: การเขียนโปรแกรม python ตอนที่ 6 โปรแกรมแบบวนซ้ำ 2024, กรกฎาคม
Anonim

ความแตกต่างที่สำคัญ – การเรียกซ้ำกับการวนซ้ำ

การเรียกซ้ำและการวนซ้ำสามารถใช้เพื่อแก้ปัญหาการเขียนโปรแกรมได้ แนวทางในการแก้ปัญหาโดยใช้การเรียกซ้ำหรือการวนซ้ำนั้นขึ้นอยู่กับวิธีการแก้ปัญหา ความแตกต่างที่สำคัญระหว่างการเรียกซ้ำและการวนซ้ำคือการเรียกซ้ำเป็นกลไกในการเรียกใช้ฟังก์ชันภายในฟังก์ชันเดียวกัน ในขณะที่การวนซ้ำคือการดำเนินการชุดคำสั่งซ้ำๆ จนกว่าเงื่อนไขที่กำหนดจะเป็นจริง การเรียกซ้ำและการวนซ้ำเป็นเทคนิคหลักในการพัฒนาอัลกอริทึมและการสร้างแอปพลิเคชันซอฟต์แวร์

การเรียกซ้ำคืออะไร

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

การเรียกซ้ำสามารถอธิบายได้โดยใช้โปรแกรมคำนวณแฟคทอเรียล

n!=n(n-1)! ถ้า n>0

n!=1 ถ้า n=0;

ดูโค้ดด้านล่างเพื่อคำนวณแฟคทอเรียลของ 3(3!=321)

intmain () {

ค่า int=factorial (3);

printf(“แฟคทอเรียลคือ %d\n” ค่า);

คืน 0;

}

intfactorial (intn) {

ถ้า(n==0) {

คืน 1;

}

อื่น {

ผลตอบแทน n แฟคทอเรียล(n-1);

}

}

เมื่อเรียกแฟคทอเรียล (3) ฟังก์ชันนั้นจะเรียกแฟคทอเรียล (2) เมื่อเรียกแฟกทอเรียล (2) ฟังก์ชันนั้นจะเรียกแฟกทอเรียล (1) จากนั้นแฟกทอเรียล (1) จะเรียกแฟคทอเรียล (0) แฟกทอเรียล (0) จะคืนค่า 1. ในโปรแกรมข้างต้น เงื่อนไข n==0 ใน “if block” เป็นเงื่อนไขพื้นฐานในทำนองเดียวกัน ฟังก์ชันแฟกทอเรียลจะถูกเรียกซ้ำแล้วซ้ำเล่า

ฟังก์ชันแบบเรียกซ้ำเกี่ยวข้องกับสแต็ก ใน C โปรแกรมหลักสามารถมีได้หลายฟังก์ชัน ดังนั้น main () คือฟังก์ชันการเรียก และฟังก์ชันที่เรียกโดยโปรแกรมหลักคือฟังก์ชันที่เรียกว่า เมื่อเรียกใช้ฟังก์ชัน ตัวควบคุมจะกำหนดให้กับฟังก์ชันที่เรียก หลังจากดำเนินการฟังก์ชันเสร็จสิ้น ตัวควบคุมจะกลับสู่หลัก จากนั้นโปรแกรมหลักจะดำเนินต่อไป ดังนั้นจึงสร้างบันทึกการเปิดใช้งานหรือสแต็กเฟรมเพื่อดำเนินการต่อไป

ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ
ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ
ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ
ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ

รูปที่ 01: การเรียกซ้ำ

ในโปรแกรมด้านบน เมื่อเรียก factorial (3) จาก main จะสร้างบันทึกการเปิดใช้งานใน call stack จากนั้นสร้างเฟรมสแต็กแฟคทอเรียล (2) ที่ด้านบนของสแต็กเป็นต้น บันทึกการเปิดใช้งานจะเก็บข้อมูลเกี่ยวกับตัวแปรในเครื่อง ฯลฯ ทุกครั้งที่มีการเรียกใช้ฟังก์ชัน จะมีการสร้างตัวแปรภายในชุดใหม่ที่ด้านบนของสแต็ก สแต็กเฟรมเหล่านี้สามารถชะลอความเร็วได้ ในทำนองเดียวกันในการเรียกซ้ำ ฟังก์ชันจะเรียกตัวเอง ความซับซ้อนของเวลาสำหรับฟังก์ชันแบบเรียกซ้ำนั้นหาได้จากจำนวนครั้งที่เรียกใช้ฟังก์ชัน ความซับซ้อนของเวลาสำหรับการเรียกใช้ฟังก์ชันหนึ่งครั้งคือ O(1) สำหรับจำนวนการโทรซ้ำ ความซับซ้อนของเวลาคือ O(n)

การวนซ้ำคืออะไร

Iteration เป็นบล็อกของคำสั่งที่ทำซ้ำซ้ำแล้วซ้ำอีกจนกว่าเงื่อนไขที่กำหนดจะเป็นจริง การวนซ้ำสามารถทำได้โดยใช้ "for loop", "do-while loop" หรือ "while loop" ไวยากรณ์ “for loop” มีดังต่อไปนี้

for (เริ่มต้น; เงื่อนไข; แก้ไข) {

// งบ;

}

ความแตกต่างที่สำคัญระหว่างการเรียกซ้ำและการวนซ้ำ
ความแตกต่างที่สำคัญระหว่างการเรียกซ้ำและการวนซ้ำ
ความแตกต่างที่สำคัญระหว่างการเรียกซ้ำและการวนซ้ำ
ความแตกต่างที่สำคัญระหว่างการเรียกซ้ำและการวนซ้ำ

รูปที่ 02: “สำหรับแผนภาพการไหลวน”

ขั้นตอนการเริ่มต้นดำเนินการก่อน ขั้นตอนนี้คือการประกาศและเริ่มต้นตัวแปรควบคุมลูป หากเงื่อนไขเป็นจริง คำสั่งในวงเล็บปีกกาจะดำเนินการ คำสั่งเหล่านั้นดำเนินการจนกว่าเงื่อนไขจะเป็นจริง หากเงื่อนไขเป็นเท็จ ตัวควบคุมจะไปที่คำสั่งถัดไปหลังจาก "for loop" หลังจากรันคำสั่งภายในลูปแล้ว ตัวควบคุมจะไปที่ส่วนแก้ไข เป็นการอัพเดทตัวแปรควบคุมลูป จากนั้นตรวจสอบเงื่อนไขอีกครั้งหากเงื่อนไขเป็นจริง คำสั่งในวงเล็บปีกกาจะดำเนินการ วิธีนี้จะทำให้ “for loop” วนซ้ำ

ใน “while loop” คำสั่งภายในลูปจะดำเนินการจนกว่าเงื่อนไขจะเป็นจริง

ในขณะที่ (เงื่อนไข){

//statements

}

ในลูป “do-while” เงื่อนไขจะถูกตรวจสอบที่ส่วนท้ายของลูป ดังนั้น การวนซ้ำจะดำเนินการอย่างน้อยหนึ่งครั้ง

ทำ{

//statements

} ในขณะที่(เงื่อนไข)

โปรแกรมหาแฟกทอเรียลของ 3 (3!) โดยใช้การวนซ้ำ (“for loop”) มีดังนี้

int หลัก(){

intn=3, แฟคทอเรียล=1;

inti;

for(i=1; i<=n; i++){

factorial=แฟคทอเรียลi;

}

printf(“แฟกทอเรียลคือ %d\n”, แฟกทอเรียล);

คืน 0;

}

ความคล้ายคลึงกันระหว่างการเรียกซ้ำและการวนซ้ำคืออะไร

  • ทั้งสองเป็นเทคนิคในการแก้ปัญหา
  • งานสามารถแก้ไขได้ทั้งแบบเรียกซ้ำหรือวนซ้ำ

การเรียกซ้ำและการวนซ้ำต่างกันอย่างไร

การเรียกซ้ำกับการวนซ้ำ

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

สรุป – การเรียกซ้ำกับการวนซ้ำ

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

ดาวน์โหลด Recursion vs Iteration เวอร์ชัน PDF

คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามหมายเหตุอ้างอิง โปรดดาวน์โหลดไฟล์ PDF ที่นี่ ความแตกต่างระหว่างการเรียกซ้ำและการวนซ้ำ