1
Làm thế nào để nhập xuất mảng sử dụng đệ quy trong C/C++?
1
Lê Nga30 đã đăng:

Cho mình hỏi làm thế nào để nhập xuất mảng mà không sử dụng vòng lặp for, thay vào đó sử dụng đệ quy ạ? Cảm ơn mọi người.

Bài viết đệ quy trong lập trình là gì? sẽ giúp ích được cho bạn nếu bạn mới bắt đầu với khái niệm đệ quy, hãy thử nghĩ một chút, một kĩ thuật đệ quy cần có:

  • Điều kiện dừng: trong trường hợp này, điều kiện dừng của mảng là chỉ số i khi i bằng 0 hoặc bằng n (n là số lượng phần tử của mảng.
  • Hàm gọi lại đệ quy: mỗi lần gọi lại đệ quy, bạn có thể tăng hoặc giảm chỉ số i để tiến tới điều kiện dừng n hoặc 0 và đồng thời đừng quên chèn thêm 2 câu lệnh nhập/xuất mảng nữa là xong.
Hữu Hiệp 20.08.2018
thêm bình luận...
1
xuans2huy510 đã đăng:

Hàm nhập mảng sử dụng kỹ thuật đệ quy,

void nhapMang(int A[], int n, int i = 0){

    // Điều kiện dừng
    if(i == n) // Dừng đệ quy khi chỉ số i = n (n: số lượng phần tử của mảng)
        return;

    // Nhập mảng
    printf("Nhap phan tu thu A[%d] = ", i);
    scanf("%d", &A[i]);

    // Gọi lại hàm đệ quy
    // đồng thời tăng giá trị của chỉ số i lên
    // điều này cũng tương tự như sử dụng vòng lặp for để duyệt mảng.
    nhapMang(A, n, i + 1);
}

Hàm xuất mảng sử dụng kỹ thuật đệ quy,

void xuatMang(int A[], int n, int i = 0){

    // Điều kiện dừng
    if(i == n)
        return;

    // Xuất mảng
    printf("%5d", A[i]);

    // Gọi lại hàm đệ quy
    xuatMang(A, n, i + 1);
}

Sử dụng hai hàm đã được cài đặt ở trên vào trong hàm main là xong,

int main(){

    int n;
    int A[100]; // Khởi tạo mảng chứa 100 phần tử

    printf("Nhap so luong phan tu cua mang = ");
    scanf("%d", &n);
    nhapMang(A, n);

    printf("Mang da nhap la:\n");
    xuatMang(A, n);
    printf("\n");

    return 1;
}

Ý tưởng cơ bản thì bạn @HữuHiệp đã trình bày rồi, mình không còn gì để nói thêm nữa, có gì thắc mắc bạn có thể bình luận bên dưới, chúc học tốt với kĩ thuật lập trình đệ quy :D.

thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)