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 tuyến tính :Cấu trúc của nó giống như định nghĩa :
- Code:
-
KieuDuLieu TenHam(Thamso)
{
if(Dieu Kieu Dung)
{
...;
return Gia tri tra ve;
}
...;
TenHam(Thamso)
...;
...;
}
Đệ 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ó.
- Code:
-
KieuDuLieu TenHam(Thamso)
{
if(Dieu Kieu Dung)
{
...;
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.
- Code:
-
KieuDuLieu TenHamX(Thamso)
{
if(Dieu Kieu Dung)
{
...;
return Gia tri tra ve;
}
...;
return TenHamX(Thamso) TenHamY(Thamso);
}
KieuDuLieu TenHamY(Thamso)
{
if(Dieu Kieu Dung)
{
...;
return Gia tri tra ve;
}
...;
return TenHamY(Thamso)TenHamX(Thamso);
}
Đệ 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.
- Code:
-
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:
1)Tính S(n) = 1 + 2 + 3 + ... + n - 1 + n
2)Tính S(n) = 1^2 + 2^2 + 3^2 + ... + (n-1)^2 + n^2
3)Tính S(n) = 1 + 1/2 + 1/3 + ... + 1/n
4)Tính S(n) = 1/2 + 1/4 + ... + 1/2n
5)Tính S(n) = 1 + 1/3 + 1/5 + ... + 1/(2n+1)
6)Tính S(n) = 1/(1*2) + 1/(2*3) + 1/( n(*n-1) )
7)Tính S(n) = 1/2 + 2/3 + 3/4 + ... + n/(n+1)
8)Tính S(n) = 1/2 + 3/4 + 5/6 + ... + (2n+1)/(2n+2)
9)Tính T(n) = 1*2*3*.....*n
10)Tính T(x,n) = x^n
11)Tính S(n) = 1 + 1.2 + 1.2.3 + .... + 1.2.3....n
12)Tính S(x,n) = x + x^2 + x^3 + ... + x^n
13)Tính S(x,n) = x^2 + x^4 +.... + x^2n
14)Tính S(x,n) = x + x^3 + x^5 +....+ x^(2n+1)
15)Tính S(n) = 1 + 1/(1+2) + 1/(1+2+3) + ... + 1/(1+2+3+...+n)
16)Tính S(x,n) = x + (x^2)/2! + (x^3)/3! + ... + (x^n)/n!
17)Tính S(x,n) = 1 + (x^2)/2! + (x^4)/4! + ... + (x^2n)/(2n)!
18)Tìm ước số lẻ lớn nhất của số nguyên dương n . Ví dụ : n = 100 ước lẻ lớn nhất của 100 là 25
19)Tính S(n) = sqrt(2 + sqrt (2 + ... sqrt ( 2 + sqrt(2) ) ) )
20)Tính S(n) = sqrt(n + sqrt (n-1 + sqrt(n-2 + ...sqrt(2 + sqrt (1) ) ) ) )
21)Tính S(n) = sqrt(1 + sqrt(2 + sqrt (3 + ...sqrt (n-1 + sqrt (n)))))
22)S(n) = 1/(1 + 1/(1 + 1/(1 + 1/(... 1 /(1/(1 + 1/(1 + 1 )))))))
23)Hãy đếm số lượng chữ số của số nguyên dương n
24)Hãy tính tổng các chữ số của số nguyên dương n
25)Hãy tính tích các chữ số của số nguyên dương n
26)Hãy đếm số lượng chữ số lẻ của số nguyên dương n
27)Hãy tính tổng các chữ số chẵn của số nguyên dương n
28)Hãy tính tích các chữ số lẻ của số nguyên dương n
29)Cho số nguyên dương n . Hãy tìm chữ số đầu tiên của n
30)Hãy tìm chữ số đảo ngược của số nguyên dương n
31)Tìm chữ số lớn nhất của số nguyên dương n
32)Tìm chữ số nhỏ nhất của số nguyên dương n
33)Hãy kiểm tra số nguyên dương n có toàn chữ số lẻ hay không ?
34)Hãy kiểm tra số nguyên dương n có toàn chữ số chẵn hay không ?
Các bạn down dìa xem giải này:
[You must be registered and logged in to see this link.] [Sưu tầm]