คำถามที่คล้ายกับคำถามนี้ถูกถามเมื่อสองสามปีก่อนแต่คำถามนี้ก็ยิ่งซับซ้อน
ความท้าทายนั้นง่าย เขียนโปรแกรม (ในภาษาของคุณเลือก) ที่ซ้ำ ๆ รันรหัสโดยไม่ต้องใช้โครงสร้างการทำซ้ำใด ๆ เช่นwhile
, for
, do while
, foreach
หรือgoto
( ดังนั้นสำหรับสิ่งที่คุณ nitpickers คุณไม่สามารถใช้ห่วง ) อย่างไรก็ตามการเรียกซ้ำไม่ได้รับอนุญาตในการทำงานที่เรียกตัวเองรู้สึก (ดูคำนิยามด้านล่าง) นั่นจะทำให้ความท้าทายนี้ง่ายเกินไป
ไม่มีข้อ จำกัด ในสิ่งที่ต้องดำเนินการในลูปแต่โพสต์คำอธิบายด้วยคำตอบของคุณเพื่อให้ผู้อื่นสามารถเข้าใจสิ่งที่ถูกนำไปใช้
สำหรับผู้ที่อาจวางสายบนคำจำกัดความนิยามของวนสำหรับคำถามนี้คือ:
A programming language statement which allows code to be repeatedly executed.
และคำจำกัดความของการสอบถามซ้ำสำหรับคำถามนี้จะเป็นนิยามฟังก์ชันการเรียกซ้ำมาตรฐานของคุณ:
A function that calls itself.
ผู้ชนะจะเป็นคำตอบที่มีผู้โหวตมากที่สุดในวันที่ 16 กรกฎาคมเวลา 10.00 น. ตามเวลาฝั่งตะวันออก โชคดี!
UPDATE:
หากต้องการสงบความสับสนที่ยังคงแสดงออกอยู่อาจช่วย:
กฎที่ระบุไว้ข้างต้น:
- อย่าใช้ลูปหรือข้ามไป
- ฟังก์ชั่นไม่สามารถเรียกตัวเองว่า
- ทำทุกอย่างที่คุณต้องการใน 'ลูป'
หากคุณต้องการนำบางสิ่งมาใช้และกฎไม่ได้ห้ามอย่างชัดเจนให้ดำเนินการต่อไป คำตอบจำนวนมากก้มกฏอยู่แล้ว
rep(f){f();f();}
- นี่คือคำสั่ง (การประกาศฟังก์ชั่นเป็นคำสั่งในบางภาษา) ที่อนุญาตให้เรียกใช้รหัสซ้ำ ๆ มันไม่ได้รับอนุญาต คุณขอรหัสเพื่อใช้วนรอบ หากรหัสนั้นเป็นคำสั่งทางประโยคคุณไม่ได้รับอนุญาต ตัวอย่างอื่น: f(b) { b(); g(b); }; g(b) { f(b); }
. ฉันจะบอกว่าf
เป็นฟังก์ชั่นวนซ้ำ (โดยการเรียกซ้ำร่วมกันg
) ไม่อนุญาตหรือไม่
function A
การโทรfunction B
และfunction B
การโทรfunction A
ในขณะที่ 1 ของการทำงานดำเนินการบางสิ่งบางอย่าง เนื่องจากฟังก์ชันไม่ได้เรียกตัวเองว่ามันควรจะถูกต้องตามเกณฑ์ ^. ^