Recent Posts

Code C++: Đệ quy Tuyến tính

-
Đệ quy tuyến tính: Thân hàm gọi 1 lần chính nó


Ví dụ:

double U(int n, double a, double r){
      if (n==1) return a;
      return r + U(n-1,a,r);    //Gọi 1 lần chính tên hàm đang định nghĩa
}

Bài toán 1: Tính X lũy thừa n

Viết chương trình tính X^n với X là số thực được xác định như sau:


Mã nguồn:

#include<conio.h>
#include<iostream>
using namespace std;
/* Hàm đệ quy trả về số thực tính giá trị X^n*/
float Mu(float X, int n){
if(n==0)
return 1;
else
return X*Mu(X,n-1);  // Gọi đệ quy hàm Mu
}
/* Chương trình chính */
int main(){
int n;
float X;
cout<<"Nhap vao gia tri cua n = ";
cin>>n;
cout<<"Nhap vao gia tri cua X = ";
cin>>X;
cout<<X<<"^"<<n<<" = "<<Mu(X,n);
getch();
return 0;
}

Bài toán 2: Thuật toán Euclide tìm ước chung lớn nhất

Viết chương trình tìm ước chung lớn nhất của 2 số nguyên dương a, b bằng thuật toán Euclide được định nghĩa đệ quy như sau:


Mã nguồn:

#include<conio.h>
#include<iostream>
using namespace std;
/* Hàm đệ quy trả về ước chung lớn nhất của 2 số a,b */
int UCLN(int a, int b) {
if(a==b)
return a;
else if(a>b)
return UCLN(a-b,b);  //Gọi hàm đệ quy UCLN
else
return UCLN(a,b-a);  //Gọi hàm đệ quy UCLN
}
/* Chương trình chính */
int main(){
int a,b;
cout<<"Nhap a = ";
cin>>a;
cout<<"Nhap b = ";
cin>>b;
cout<<"Uoc chung lon nhat cua "<<a<<" va "<<b<<" la "<<UCLN(a,b);
getch();
return 0;
}

Bài toán 3: Tính n giai thừa
Viết chương trình tính n! được định nghĩa đệ quy như sau:
Mã nguồn:
#include<conio.h>
#include<iostream>
using namespace std;
/* Hàm đệ quy trả về giai thừa của n */
int GiaiThua(int n){
if(n==0)
return 1;
else
return n*GiaiThua(n-1);
}
/* Chương trình chính */
int main(){
int n;
cout<<"Nhap n = "; cin>>n;
cout<<n<<"!= "<<GiaiThua(n);
getch();
return 0;
}
Tag: C, C++, Đệ quy tuyến tính, Đệ quy, Khử đệ quy, recursive

Related Post:

  • Code C-C++: Phép toán cộng, nhân hai ma trận#include<conio.h>#include<iostream.h>#define max 100/*Nhap ma tran*/void NhapMaTran(float A[max][max], int m, int n){   for(int i = 0; i<m; i++)   for(int j = 0; j<n; j++) {      cout<<"a["<<i<<"]["<<j<<"] = ";      cin>>A[i][j];   }}/*Xuat ma tran*/void X… Read More
  • VBA: Hàm tách tên trong xâu họ và tênHàm tách tên trong xâu họ và tên.(VD: Nếu biết họ tên là Nguyễn Minh Ngọc, hàm sẽ tách ra được tên là Ngọc)Function GetTen(hoten As String) As StringDim pos As Integer pos = 1 If InStr(pos, Trim(hoten), " ") = 0 Then GetTen = hoten Exit Function End If While InStr(pos + 1, Trim(hoten), " ") > 0pos = InStr(pos + 1, Trim(ten), " ") Wend GetTen = Mid(hoten, pos) End F… Read More
  • VBA: Cấu trúc If TypeOf … Is … ThenCú pháp:If TypeOf biến_đối_tượng Is hằng_nội_tại Then          Lệnh_1 [ ElseIf TypeOf biến_đối_tượng Is hằng_nội_tại Then          Lệnh_2 ] …… [ Else          Lệnh_n ] End If Cấu trúc này kiểm định đối tượng mà biến biểu thị thuộc loại nào với hằng nội tạ… Read More
  • VBA: Cấu trúc With … End WithCú pháp:With đối_tượng        Lệnh …… End WithCấu trúc With cho phép thực hiện các lệnh đối với một biến đối tượng nào đó hoặc biến có kiểu do người sử dụng tự định nghĩa. Các lệnh trong cấu trúc With sẽ tham chiếu trực tiếp đến các tính chất của đối tượng, vì vậy cấu trúc này thường được dùng để thay đổi giá trị của các tính chất tr… Read More
  • VBA: Cấu trúc For Each … NextCú pháp:For Each phần_tử  In nhóm      Lệnh      ……      [ Exit For ]  Lệnh Next [ phần_tử] Số lần vòng lặp For thực hiện các lệnh tùy thuộc vào số phần tử trong nhóm. Phần tử là biến đối tượng chứa trong một đối tượng khác, còn nhóm có thể là mảng hoặc biến đối tượng bao gồm nhiều đối tượ… Read More
  • Code C-C++: Tìm ma trận chuyển vị trong C++#include<iostream>#include<iomanip>using namespace std;int M[50][50];void NhapMaTran(int A[50][50], int n, int m){ for(int i=0;i<n;i++) for(int j=0;j<m;j++){ cout<<"\n A["<<i<<","<<j<<"]= "; cin>>A[i][j]; }}void InMaTran(int B[50][50], int n,int m){ for(int i=0;i<n;i++){ for(int j=0;j<m;j++) … Read More




Klik untuk melihat kode: :) =( :s :D :-D ^:D ^o^ 7:( :Q :p T_T @@, :-a :W *fck* x@