Các hàm inline.

Một phần của tài liệu C++ cơ bản và nâng cáo (Trang 38 - 39)

Chỉ thị inline có thểñược ñặt trước khao báo của một hàm ñể chỉ rõ rằng lời gọi hàm sẽ ñược thay thế bằng mã lệnh của hàm khi chương trình ñược dịch. Việc này tương ñương với việc khai báo một macro, lợi ích của nó chỉ thể hiện với các hàm rất ngắn, tốc ñộ

chạy chương trình sẽñược cải thiện vì nó không phải gọi một thủ tục con. Cấu trúc của nó như sau:

inline type name ( arguments ... ) { instructions ... }

lời gọi hàm cũng như bất kì một hàm nào khác. Không cần thiết phải ñặt từ khoá inline

trong lệnh gọi, chỉ cần trong lời khai báo hàm là ñủ.

ðệ qui.

Các hàm có thể gọi chính nó. ðiều này có thể có ích với một số tác vụ như là một số

phương pháp sắp xếp hay tính giai thừa của một số. Ví dụ, ñể tính giai thừa của một số

(n), công thức toán học của nó như sau:

n! = n * (n-1) * (n-2) * (n-3) ... * 1

và một hàm ñệ qui ñể tính toán sẽ như sau:

// factorial calculator

#include <iostream.h>

long factorial (long a)

Type a number: 9 !9 = 362880

{

if (a > 1)

return (a * factorial (a-1)); else return (1); } int main () { long l;

cout << "Type a number: "; cin >> l;

cout << "!" << l << " = " << factorial (l);

return 0; }

Chú ý trong hàm factorial chúng ta có thể lệnh gọi chính nó nhưng chỉ khi tham số lớn hơn 1, nếu không thì hàm sẽ thực hiện một vòng lặp vô hạn vì sau khi ñến 0 nó sẽ tiếp tục nhân cả những số âm.

Hàm này có một hạn chế là kiểu dữ liệu mà nó dùng (long) không cho phép tính giai thừa quá 12!.

Một phần của tài liệu C++ cơ bản và nâng cáo (Trang 38 - 39)