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

Đề tài: Vấn đề về đệ quy

  1. #1
    Ngày gia nhập
    08 2008
    Bài viết
    7

    Mặc định Vấn đề về đệ quy

    Vấn đề là thế này: Ví dụ ta có hàm đệ quy tính giai thừa như sau:
    long GiaiThua(int n)
    {
    if(n == 0) return 1;
    return n * GiaiThua(n-1);
    }
    Em muốn hỏi là nếu ỡ chỗ gọi hàm đệ quy mà không cò chữ return thì sẽ ra sao? Có phải là kết quả cuối cùng là ra 1 phải không. Theo em hiểu thì có return thì kết quả tính ra sẽ trả lại cái hàm gọi ban đầu còn không có return thì kết quả sẽ trả về lần gọi hàm đệ quy cuối cùng đúng không?

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Trước khi học phần CTDL&GT này thì bạn đã học C cơ bản chưa, bạn có hiểu return trong chương trình con có ý nghĩa gì không. Tại sao lại hỏi ngớ ngẩn vậy.

    return sẽ trả viề giá trị cho hàm đồng thời kết thúc hàm. Ở bài trên không có return thì chương trình không chạy chứ không phải là ra 1.

  3. #3
    Ngày gia nhập
    08 2008
    Bài viết
    7

    Em lấy thí dụ như thế này:đây là hàm insert trong cây nhị phân tìm kiếm
    int insert(Tree &t,int x)//chen x vao cay
    {
    if(t)
    {
    if(t->key == x) return 0;
    if(t->key < x) return insert(t->left,x);
    if(t->key > x) return insert(t->right,x);
    }
    t = new Tnode;
    if(t == null) return -1;
    t->key = x;
    t->left = t->right = null;
    return 1;
    }

    Trong đoạn code trên thì nếu lúc gọi đệ quy dùng return thì sau khi kết thúc con trỏ t sẽ quay trở lại gốc của cây, còn nếu không dùng return thì sau khi chèn xong nó đứng tại vị trí chèn lun. Đây chính là chỗ em khó hiểu
    Đã được chỉnh sửa lần cuối bởi dokyan1989 : 20-03-2009 lúc 10:57 PM.

  4. #4
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    QuangHoang nói đúng rồi còn gì nữa. Nếu bỏ return đi thì hàm đó làm sao chạy, chính xác hơn là làm gì có giá trị trả về đâu.

    Còn việc có return không thì nó còn phụ thuộc vào mục đích của người sử dụng. Nếu cần hàm có giá trị trả về thì có câu lệnh return còn nếu như không có giá trị trả về thì đương nhiên là không cần return cũng được.

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