Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 9 của 9

Chủ đề: Đệ Qui Hàm

  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình cũng mới học C nhưng chưa dùng đệ quy để code bao giờ. Đối với bài này thì mình làm như này, mong được chỉ giáo và mong biết thêm cách đệ quy nữa
    Mã:
    #include<stdio.h>
    #define MAX 1000
    int find()
    {
    	int sum = 0;
    	for(int n = 0; ; n++)
    	{
    		sum = sum + n;
    		if(sum == MAX)
    			return n + 1;
    		if(sum > MAX)
    			return n;
    	}
    }
    
    int main()
    {
    	printf("n min = %d", find());
    	return 0;
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã:
    int find_n(int max, int n = 1){    static int sum = 0;        sum += n;    if ( sum >= max )        return n-1;     find_n(max,++n);}
    Thử bằng cái này thử, mình chưa chạy thử, chỉ viết đại thôi, bạn coi có lỗi thì sửa nha.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi trandatnh
    Mã:
    int find_n(int max){    static int sum = 0;    static int n = 1;        sum += n;    if ( sum >= max )        return n-1;     find_n(++n,max);}
    Thử bằng cái này thử, mình chưa chạy thử, chỉ viết đại thôi, bạn coi có lỗi thì sửa nha.
    Mình thì mình không biết kiểu dữ liệu static int vì mình mới đang học C thôi. Nhưng mình thấy hình như bạn có 1 lỗi sai ở chỗ bạn gọi hàm find_n là : find_n(++n,max); . Mà ở trên bạn khai báo tham số truyền vào chỉ là max thôi mà lời gọi hàm lại có 2 tham số truyền vào là sao?

  5. #5
    à, mình không cần thẩn, vừa nghĩ vừa code thôi chưa chạy thử [IMG]images/smilies/biggrin.png[/IMG] thanks [IMG]images/smilies/smile.png[/IMG]


    Mã:
    #include <iostream> int find_n(int max, int n = 1){    static int sum = 0;        sum += n;    if ( sum >= max )        return n-1;     find_n(max,++n);} int main(){   std::cout << find_n(10);    return 0;}

    Mã:
    #include <stdio.h> int find_n(int max, int n = 1){    static int sum = 0;        sum += n;    if ( sum >= max )        return n-1;     find_n(max,++n);} int main(){    printf("%d", find_n(5));    return 0;}

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    [IMG]images/smilies/biggrin.png[/IMG] bạn code lại bằng đệ quy đi. Mình chưa code đệ quy bao giờ nên cũng không rõ

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi imk
    Mình thì mình không biết kiểu dữ liệu static int vì mình mới đang học C thôi. Nhưng mình thấy hình như bạn có 1 lỗi sai ở chỗ bạn gọi hàm find_n là : find_n(++n,max); . Mà ở trên bạn khai báo tham số truyền vào chỉ là max thôi mà lời gọi hàm lại có 2 tham số truyền vào là sao?
    static int là để giữ giá trị của sum thôi, còn không muốn dùng static int thì phải làm như thế này.


    Mã:
    #include <stdio.h> int find_n(int max, int n = 1, int sum = 0){        sum += n;    if ( sum >= max )        return n-1;     find_n(max,++n, sum);} int main(){    printf("%d", find_n(11));    return 0;}

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi imk
    [IMG]images/smilies/biggrin.png[/IMG] bạn code lại bằng đệ quy đi. Mình chưa code đệ quy bao giờ nên cũng không rõ
    Trong phần này mình làm theo kiểu đệ quy rồi đó bạn, mình có làm clip đệ quy ở đây bạn xem qua thử

    http://www.youtube.com/watch?v=wxTwc-S8nxs&feature=c4-overview&list=UUDFU6Q8PQJgbJhxIgnDs7_A

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Nếu hiểu thì quy trình của nó khá là giống với vòng lặp với biến n tăng lên sau mỗi vòng đúng không [IMG]images/smilies/biggrin.png[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •