Các hàm inline.

Một phần của tài liệu Giao_Trinh_C_Can_Bn_Va_nang_Cao (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

{

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 Giao_Trinh_C_Can_Bn_Va_nang_Cao (Trang 38 - 39)

Tải bản đầy đủ (PDF)

(79 trang)