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