ที่นี่เราจะเห็นวิธีแก้ปัญหาที่ยุ่งยาก เราจะพิมพ์ตัวเลขตั้งแต่ 1 ถึง N โดยไม่ต้องใช้เครื่องหมายอัฒภาค
เราสามารถแก้ปัญหานี้ได้สองวิธี วิธีแรกคือวิธีวนซ้ำ และวิธีที่สองเป็นวิธีแบบเรียกซ้ำ
วิธีที่ 1
ฟังก์ชัน printf() จะคืนค่าความยาวของสตริง ดังนั้นจึงเป็นค่าที่ไม่ใช่ศูนย์ เราสามารถดำเนินการตามตรรกะ AND โดยมีเงื่อนไขในการพิมพ์ผลลัพธ์ แล้วเพิ่มมูลค่าของตัวนับ
โค้ดตัวอย่าง
#include<stdio.h> #define N 20 int main(int num, char *argv[]) { while (num <=N && printf("%d ", num) && num++) { //The while body is empty. } }
ผลลัพธ์
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
วิธีที่ 2
ในวิธีที่สอง เราจะดูวิธีการทำงานเดียวกันโดยใช้การเรียกซ้ำ เราจะผ่านข้อโต้แย้งด้วยฟังก์ชันหลัก หลักนี้จะถูกเรียกซ้ำ
โค้ดตัวอย่าง
#include<stdio.h> #define N 20 main(int val) { if (val <=N && printf("%d ", val) && main(val + 1)) { //Body is empty } }
ผลลัพธ์
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20