Cũng tương tự như các kiểu dữ liệu cơ bản, giá trị trả lại của một hàm cũng có thể là các cấu trúc dưới các dạng sau:
- Là một biến cấu trúc. - Là một con trỏ cấu trúc.
- Là một tham chiếu cấu trúc.
Giá trị của hàm là cấu trúc:
Ví dụ : Cộng, trừ hai số phức.
Hàm cộng 2 số phức, trả lại một số phức
Sophuc Cong(Sophuc x, Sophuc y) {
Sophuc kq;
kq.thuc = x.thuc + y.thuc ; kq.ao = x.ao + y.ao ;
return kq;
Khai báo kiểu số phức
struct Sophuc { float thuc; float ao; }; 6.3 Hàm và cấu trúc
Hàm trừ 2 số phức, trả lại một số phức
Sophuc Tru(Sophuc x, Sophuc y) { Sophuc kq;
kq.thuc = x.thuc - y.thuc ; kq.ao = x.ao - y.ao ;
return kq; }
Hàm in một số phức dạng (r + im)
void In(Sophuc x) {
cout << “(” << x.thuc << “,” << x.ao << “)” << endl ; }
Hàm chính
void main() {
Sophuc x, y, kq ;
cout << "x = " ; cin >> x.thuc >> x.ao ; cout << "y = " ; cin >> y.thuc >> y.ao ; cout << "x + y = " ;
kq=cong(x,y); In(kq);
-Khái niệm -Đặc điểm
- Đệ quy là một kỹ thuật cho phép trong thân một hàm nào đó có lời gọi đến chính nó.
- Cần phải tránh trường hợp trình tự vô hạn của việc gọi hàm (đệ quy vô hạn)
- Giải bài toán bằng thuật toán đệ quy là đưa bài toán hiện tại về một bài toán cùng loại, cùng tính chất nhưng ở cấp độ thấp hơn
- Quá trình này tiếp tục cho đến lúc bài toán được đưa về một cấp độ mà tại đó có thể giải được.
- Từ kết quả ở cấp độ này, ta sẽ lần ngược để giải được bài toán ở cấp độ cao hơn cho đến lúc giải được bài toán ở cấp độ ban đầu.
- Đệ quy có sự liên hệ rất chặt chẽ với quy nạp toán học
- Đệ quy mạnh ở điểm nó có thể định nghĩa một tập vô hạn các đối tượng chỉ bằng một số hữu hạn các mệnh đề.
- Ưu thế của thuật toán đệ quy: chỉ cần giải bài toán tại một số trường hợp đặc biệt nào đó, các trường hợp khác được xác định thông qua trường hợp đặc biệt
* Mọi thuật toán đệ quy đều gồm hai phần:
- Phần cơ sở (trường hợp suy biến): Là các trường hợp không cần thực hiện lại thuật toán
Ví dụ 1:
Viết hàm tính tổng bằng đệ quy
int SUM(int n) { if (n==1) return 1; else return (n+SUM(n-1)); Ví dụ
Ví dụ 2:
Viết hàm tính n! bằng đệ quy với 0!=1
int GT(int n) { if (n==0) return 1; else Ví dụ
Ví dụ 3:
Viết hàm tính xn bằng đệ quy với x0=1
int Luythua(int x, int n) { if (n==0) return 1; else return (x*Luythua(x,n-1)); Ví dụ
Ví dụ 4: Viết hàm tính số Fibonaci bằng đệ quy với f(1)=f(2)=1 và f(n) = f(n-1) + f(n-2) khi n>=3
int Fibo(int n) {
if (n==1||n==2)
return 1; else
Các loại biến và tác dụng của nó:
+ Biến cục bộ (local variable): là các biến được khai báo trong thân của hàm và nó chỉ có tác dụng trong hàm chứa nó. Kể cả các biến được khai báp trong hàm main() thì cũng chỉ có tác dụng trong hàm đó mà thôi.