Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: tính tổng bằng đệ quỵ

  1. #1
    Ngày gia nhập
    11 2011
    Bài viết
    4

    Mặc định tính tổng bằng đệ quỵ

    #include <stdio.h>
    #include <conio.h>
    int tong(int n)
    {
    if(n==0) return 0;
    return n+tong(n-1);
    }
    void main()
    {
    int n;
    printf("nhap n ");
    scanf("%d",&n);
    printf("tong la : %d \n",tong( n ));
    getch();
    }
    Em chưa rành về đệ quỵ lắm,nên không hiểu ngay chỗ return n+tong(n-1);tại sao lại viết như vậy?mà sao không có vòng lập gì hết mà vẫn ra kết quả mong mọi người giải thích và có thể cho e vài ví dụ để hiểu hơn.Thanks nhiều.

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    22

    n= 4
    ( A + 4 )
    ( B +3) A
    ( C +2) B
    ( D +1) C
    (0) D
    Hy vọng hình trên giúp bạn hiểu hơn (mỗi hàng là 1 lần gọi lại hàm tính tổng đến 0 là dừng)

  3. #3
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Công thức tổng:

    Tong(n) = 1 + 2 + 3 + ... + n

    Trong phép đệ quy, dạng quay lui dễ làm hơn dạng tiến
    90% phương pháp đệ quy quay lui dựa trên công thức
    f(n) = g(f(n-1)); trong đó g là một phép toán đơn giản.

    Dùng toán số để đưa hàm Tong(n) về dạng đệ quy như sau

    Tong(n) = n + (n-1) + (n-2) + ... +1
    nhận xét: (n-1) + (n-2) + ... +1 = Tong(n-1)
    suy ra: Tong(n) = n + Tong(n-1)

    Đó chính là cái "return n+tong(n-1);" mà bạn thắc mắc

  4. #4
    Ngày gia nhập
    11 2011
    Bài viết
    4

    Mặc định tính tổng bằng đệ quy

    thank nhiều nha.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn