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

Đề tài: đệ quy tổng GT

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

    Mặc định đệ quy tổng GT

    sửa giùm em đoạn code này
    đề là s=1! + 2! +3 !+4 ! dùng đệ quy...tại sao em nhập số 0 vào thì tổng giai thừa ==0 nhỉ
    Code:
    #include<stdio.h>
    #include<conio.h>
    int gt(int n)
    {
    	if (n==0) return 1;
    	else
    		return(n*gt(n-1));
    
    }
    
    int tonggt(int n)
    {
    if (n>=0)
    return(gt(n) + tonggt(n-1));
    }
    void main()
    {
    	int n;
    	printf("nhap n");
    	scanf("%d",&n);
    	printf("gia tri cua tong giai thua la %d ",tonggt(n));
    getch();
    }

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Code:
    #include<stdio.h>
    #include<conio.h>
    int gt(int n)
    {
    	if (n==0) return 1;
    	else
    		return(n*gt(n-1));
    
    }
    
    int tonggt(int n)
    {
    if (n>=0)
    return(gt(n) + tonggt(n-1));
    else return 0;
    }
    void main()
    {
    	int n;
    	printf("nhap n");
    	scanf("%d",&n);
    	printf("gia tri cua tong giai thua la %d ",tonggt(n));
    getch();
    }
    code ra gió bão

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

    cho hỏi đoạn khi mình nhập n ==0 tức là nó xếp (gt(n) + tonggt(n-1));
    trong stack
    ..bắt đầu nó tính gt(0)==1 sau đó gọi lại tonggt(-1) nhưng mà không có dòng else return 0; thì sẽ vẫn chỉ là gt(0)+ tonggt(-1) thui hả...còn có dòng else return 0; thì tonggt(-1) trả về 0; vì n <0.. khi đó sẽ là gt(0) + tonggt(-1)== 1 + 0 =1 mình suy nghĩ như thế đã đúng chưa?>...nếu chưa thì giải thích giùm cái nha Thanks

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi thanhlinhhue Xem bài viết
    cho hỏi đoạn khi mình nhập n ==0 tức là nó xếp (gt(n) + tonggt(n-1));
    trong stack
    ..bắt đầu nó tính gt(0)==1 sau đó gọi lại tonggt(-1) nhưng mà không có dòng else return 0; thì sẽ vẫn chỉ là gt(0)+ tonggt(-1) thui hả...còn có dòng else return 0; thì tonggt(-1) trả về 0; vì n <0.. khi đó sẽ là gt(0) + tonggt(-1)== 1 + 0 =1 mình suy nghĩ như thế đã đúng chưa?>...nếu chưa thì giải thích giùm cái nha Thanks
    lúc n = 0 thì nó return 1 liền đâu có gọi đệ quy nữa mà xếp vô stack làm gì.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    07 2008
    Bài viết
    30

    vâng như vậy nếu return 1 ngay thì kết quả =1, giả sử không có else return 0 thì tại sao kết quả nó =0?

  6. #6
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Mặc định đệ quy tổng GT

    nó moi -1 từ stack ra + với 1 từ gt thì = 0 ...
    code ra gió bão

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Code của bạn 6220119 vẫn còn tính sai. Mình sửa lại code mới nè :
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. int gt(int n)
    5. {
    6.     if (n==1)
    7.         return 1;
    8.     else
    9.         return (n * gt(n-1));
    10.  
    11. }
    12.  
    13. int tonggt(int n)
    14. {
    15.     if (n>=1)
    16.         return (gt(n) + tonggt(n-1));
    17.     else
    18.         return 0;
    19. }
    20. void main()
    21. {
    22.     int n;
    23.     printf("nhap n : ");
    24.     scanf("%d",&n);
    25.     printf("gia tri cua tong giai thua la %d\n",tonggt(n));
    26.     getch();
    27. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    04 2008
    Bài viết
    336

    uh ... mình quên ko đọc kỹ đề tại thấy bạn ấy hỏi tại sao ra 0 nên mình sửa lại chỗ return 0 thôi.
    mà nếu đề là 1!+2!+...+n! thì bài lúc đầu của thanhlinhhue cũng tính đúng rồi
    Đã được chỉnh sửa lần cuối bởi 6220119 : 12-09-2008 lúc 11:15 PM.
    code ra gió bão

  9. #9
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    ừ nhỉ, mình cũng làm chuyện ruồi bu quá
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  10. #10
    Ngày gia nhập
    02 2008
    Nơi ở
    AYS 107
    Bài viết
    41

    Lưu ý đầu tiên khi đệ qui: Nôm na là Phải có bước khởi tạo.
    Cũng giống như chứng minh bằng qui nạp: đúng với mọi n>=k cũng phải chỉ ra đúng với n=k rồi giả sử gì tiếp thì giả sử.
    I don't wanna waste another day

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