Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In dãy số không dùng vòng lặp trong C

Cho N, K. In dãy: bắt đầu N, trừ K cho đến ≤0, rồi cộng K cho đến về N. Không dùng vòng lặp (for/while), dùng đệ quy.

Ví dụ

Đầu vào - N=12, K=3

Đầu ra - 12 9 6 3 0 3 6 9 12

Phương pháp đệ quy

  • Hàm printSeries(current, N, K, flag)
  • flag=true: đang giảm, flag=false: đang tăng
  • In current
  • Nếu current ≤ 0 → đảo flag
  • Nếu current == N và flag=false → dừng (đã quay về)
  • Đệ quy: current-K (giảm) hoặc current+K (tăng)

Chương trình mẫu

#include <stdio.h>
#include <stdbool.h>

void printSeries(int current, int N, int K, bool flag) {
    printf("%d ", current);
    
    if (current <= 0) flag = !flag;
    if (current == N && !flag) return;
    
    if (flag)
        printSeries(current - K, N, K, flag);
    else
        printSeries(current + K, N, K, flag);
}

int main() {
    int N = 12, K = 4;
    printf("Dãy số: ");
    printSeries(N, N, K, true);
    printf("\n");
    return 0;
}

Kết quả

Dãy số: 12 8 4 0 4 8 12

Lưu ý: Đệ quy có thể tràn stack nếu N/K lớn. Cách này chủ yếu để minh họa tư duy đệ quy.