Có thể in 1-100 không dùng loop bằng: đệ quy (recursion), goto, hoặc hàm ngoài main().
Ví dụ: Đệ quy
#include <stdio.h>
void printNumbers(int val) {
if (val <= 100) {
printf("%d\t", val);
printNumbers(val + 1);
}
}
int main() {
printNumbers(1);
return 0;
}
Kết quả
1 2 3 4 5 ... 100
Giải thích: Hàm printNumbers in giá trị hiện tại, sau đó gọi chính nó với val+1. Điều kiện dừng: val > 100.
Các cách khác
- Goto: Dùng label và
goto(không khuyến khích). - Template metaprogramming (C++): Tính toán tại compile-time.
- std::iota + algorithm (C++):
std::iota(v.begin(), v.end(), 1);rồi in.
Lưu ý: Đệ quy 100 cấp an toàn (stack đủ lớn). Nhưng đệ quy sâu (nghìn cấp) sẽ gây stack overflow. Cách này chủ yếu để hiểu tư duy đệ quy.