1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu tổng hợp giải thuật hàm đệ quy diễn đàn đại học

14 308 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 716,95 KB

Nội dung

DIỄN ĐÀN   ĐĂNG NHẬP / ĐĂNG KÝ Tìm kiếm tùy chỉnh Tài liệu Tìm kiếm    Tổng hợp giải thuật hàm đệ quy Chuyên mục 'Tài Liệu' bởi loveIT, 26 Tháng hai 2013 Thông Tin Du Học Mỹ 2017 Quảng cáo của Google Bài tập Tập tập Học tập ĐỆ QUY Khái niệm :  Một hàm được gọi là đệ qui nếu bên trong thân của hàm đó có lời gọi hàm lại chính nó Phân loại đệ qui :  Đệ quy thường gặp thuộc một trong bốn loại sau : Đệ qui tuyến tính  Đê qui nhị phân  Đệ qui phi tuyến  Đệ qui hỗ tương Cấu trúc hàm đệ qui :  Đệ qui nhị phân : Cũng giống như đệ qui tuyến tính nhưng bên trong thân hàm của nó có thêm một lời gọi lại chính nó  Mã: KieuDuLieu TenHam(Thamso)   {                if(Dieu Kieu Dung)   Học xong chưa giải trí nào?!             {                           ;                          return Gia tri tra ve;               }                ;               TenHam(Thamso);                ;                ;               TenHam(Thamso);                ;                ;   }  Đệ qui tương hỗ : Trong đệ qui tương hỗ thì thường có 2 hàm , và trong thân của hàm này có lời gọi của hàm kia , điều kiện dừng và giá tri tra về của cả hai hàm có thể giống nhau hoặc khác nhau  Mã: KieuDuLieu TenHamX(Thamso)   {             if(Dieu Kieu Dung)             {                          ;                         return Gia tri tra ve;             }              ;             return TenHamX(Thamso) TenHamY(Thamso);   }   KieuDuLieu TenHamY(Thamso)   {           if(Dieu Kieu Dung)[INDENT]{[/INDENT]  [INDENT=2] ;[/INDENT]  [INDENT=2]return Gia tri tra ve;[/INDENT]  [INDENT]}[/INDENT]  [INDENT] ;[/INDENT]  [INDENT]return TenHamY(Thamso)TenHamX(Thamso);[/INDENT]  }  Đệ qui phi tuyến : Hàm được gọi là đệ qui phi tuyến nếu bên trong thân hàm có lời gọi lại chính nó được đặt bên trong thân của vòng lặp  Mã: KieuDuLieu TenHam(Thamso)   {       if(Dieu Kieu Dung)       {            ;           return Gia tri tra ve;       }        ;       vonglap(dieu kieu lap)       {            TenHam(Thamso) ;       }       return Gia tri tra ve; }   Bài tập đệ qui :  1/Đệ qui tuyến tính :  Học xong chưa giải trí nào?! Bài tập 730: Tính S(n) = 1 + 2 + 3 +   + n ­ 1 + n  Mã: int Tinh(int n)     {                     if (n==1)                           return 1;                     return Tinh(n‐1) + n;     }  Bài tập 731 : Tính S(n) = 1^2 + 2^2 + 3^2 +   + (n­1)^2 + n^2  Mã: int Tinh(int n)     {                     if (n==1)                              return 1;                     return Tinh(n‐1) + n*n;     }   Bài tập 732 : Tính S(n) = 1 + 1/2 + 1/3 +   + 1/n  Mã: float Tinh(float n)     {                     if (n==1)                               return 1;                     return Tinh(n‐1) + 1/n;     }   Bài tập 733 : Tính S(n) = 1/2 + 1/4 +   + 1/2n  Mã: float Tinh(float n){[INDENT=4]if (n==1)[/INDENT]  [INDENT=2]return 0.5;[/INDENT]  [INDENT]return Tinh(n‐1) + 1/(2*n);[/INDENT]  } Bài tập 734 : Tính S(n) = 1 + 1/3 + 1/5 +   + 1/(2n+1)  Mã: float Tinh(float n)     {                     if (n==1)                                     return 1;                     return Tinh(n‐1) + 1/(2*n+1);     }   Học xong chưa giải trí nào?! Bài tập 735: Tính S(n) = 1/(1*2) + 1/(2*3) + 1/( n(*n­1) )  Mã: float Tinh(float n)     {                     if (n==1)                                     return 0.5;                     return Tinh(n‐1) + 1/(n*(n+1));     }  Bài tập 736 : Tính S(n) = 1/2 + 2/3 + 3/4 +   + n/(n+1)  Mã: float Tinh(float n)     {                     if (n==1)                                     return 0.5;                     return Tinh(n‐1) + n/(n+1);     }  Bài tập 737 :Tính S(n) = 1/2 + 3/4 + 5/6 +   + (2n+1)/(2n+2)  Mã: float Tinh(float n)     {                     if (n==1)                                     return 0.5;                     return Tinh(n‐1) + (2*n+1)/(2*n+2);     }   Bài tập 738 :Tính T(n) = 1*2*3* *n  Mã: float Tinh(float n)     {                     if (n==1)                                     return 1;                     return Tinh(n‐1)*n;     }   Bài tập 739 :Tính T(x,n) = x^n Mã: float LuyThua(float x , int n)[INDENT]{[/INDENT]  [INDENT]if(n == 0)[/INDENT]  [INDENT=2]{[/INDENT]  [INDENT=3]return 1;[/INDENT]  [INDENT=2]}[/INDENT]  [INDENT]if(n  0)[/INDENT]  [INDENT=2]{[/INDENT]  [INDENT=3]return DoiChuSo(H*10,Dem‐1);[/INDENT]  [INDENT=2]}[/INDENT]  [INDENT]return H;[/INDENT]  }  int ChuSoDaoNguoc(int n)  {[INDENT]if(n == 0)[/INDENT]  [INDENT]{[/INDENT]  [INDENT=2]return 0;[/INDENT]  [INDENT]}[/INDENT]  [INDENT]int Dem = DemSoLuongChuSo(n);[/INDENT]  [INDENT]int H = n%10;[/INDENT]  [INDENT]int T = DoiChuSo(H,Dem‐1);[/INDENT]  [INDENT]return ChuSoDaoNguoc(n/10) + T;[/INDENT]  } Bài tập 760 :Tìm chữ số lớn nhất của số nguyên dương n  Học xong chưa giải trí nào?! Mã: int ChuSoLonNhat(int Max,int n)          //Max bắt đầu là n%10     {                 if (n%10==0)                 {                             return Max;                 }                 Max=(Max>n%10)?Max:n%10;               return ChuSoLonNhat(Max,n/10);     }  Bài tập 761 :Tìm chữ số nhỏ nhất của số nguyên dương n  Mã: int ChuSoLonNhat(int Max,int n) //Max bắt đầu là n%10[INDENT]{[/INDENT]  [INDENT]if (n%10==0)[/INDENT]  [INDENT]{[/INDENT]  [INDENT=2]return Max;[/INDENT]  [INDENT]}[/INDENT]  [INDENT]Max=(Max>n%10)?Max:n%10;[/INDENT]  [INDENT]return ChuSoLonNhat(Max,n/10);[/INDENT]  }  Bài tập 761 :Tìm chữ số nhỏ nhất của số nguyên dương n Mã: int ChuSoNhoNhat(int Min,int n) //Min bắt đầu là n%10  {[INDENT]if (n%10==0)[/INDENT]  [INDENT]{[/INDENT]  [INDENT=2]return Min;[/INDENT]  [INDENT]}[/INDENT]  [INDENT]Min=(Min

Ngày đăng: 19/05/2017, 20:28

TỪ KHÓA LIÊN QUAN

w