Tự học C++: Đệ quy

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 đệ quy để tính toán sẽ như sau:

// factorial calculator

#include

long factorial (long a)

{

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;

}
Type a number: 9
!9 = 362880

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!.

Khai báo mẫu cho hàm.

Cho đến giờ chúng ta hoàn toàn phải định nghĩa hàm trước lệnh gọi đầu tiên đến nó, mà thường là trong main, vì vậy hàm main luôn phải nằm cuối chương trình. Nếu bạn thử lặp lại một vài ví dụ về hàm trước đây nhưng thử đặt hàm main trước bất kì một hàm được gọi từ nó, bạn gần như chắc chắn sẽ nhận được thông báo lỗi. Nguyên nhân là một hàm phải được khai báo trước khi nó được gọi như những gì chúng ta đã làm trong tất cả các ví dụ.

Nhưng có một cách khác để tránh phải viết tất cả mã chương trình trước khi chúng có thể được dùng trong main hay bất kì một hàm nào khác. Đó chính là khai báo mẫu cho hàm. Cách này bao gồm việc khai báo hàm một cách ngắn gọn nhưng đủ để cho trình dịch có thể biết các tham số và kiểu dữ liệu trả về của hàm.

Dạng của nó như sau:

type name ( argument_type1, argument_type2, ...);

Đây chính là phần đầu của định nghĩa hàm, ngoại trừ:

  • Nó không có bất kì lệnh nào cho hàm. Điều này có nghĩa là nó không bao gồm thân hàm với tất cả các lệnh thường được bọc trong cặp ngoặc nhọn { }.
  • Nó kết thúc bằng dấu chấm phẩy (;).
  • Trong phần liệt kê các tham số chỉ cần viết kiểu của chúng là đủ. Việc viết tên của các tham số trong phần khai báo mẫu là không bắt buộc.

Ví dụ:

// prototyping

#include

void odd (int a);

void even (int a);

int main ()

{

int i;

do {

cout << "Type a number: (0 to exit)";

cin >> i;

odd (i);

} while (i!=0);

return 0;

}

void odd (int a)

{

if ((a%2)!=0) cout << "Number is odd. ";

else even (a);

}

void even (int a)

{

if ((a%2)==0) cout << "Number is even. ";

else odd (a);

}
Type a number (0 to exit): 9
Number is odd.
Type a number (0 to exit): 6
Number is even.
Type a number (0 to exit): 1030
Number is even.
Type a number (0 to exit): 0
Number is even.

Ví dụ này rõ ràng không phải là một ví dụ về sự hiệu quả. Tôi chắc chắn rằng các bạn có thể nhận được kết quả như trên chỉ với một nửa số dòng lệnh. Tuy nhiên nó giúp cho chúng ta thấy được việc khai báo mẫu các hàm là như thế nào. Hơn nữa, trong ví dụ này việc khai báo mẫu ít nhất một hàm là bắt buộc.

Đầu tiên chúng ta thấy khai báo mẫu của hai hàm oddeven:

void odd (int a);
void even (int a);

cho phép hai hàm này có thể được sử dụng trước khi chúng được định nghĩa hoàn chỉnh. Tuy nhiên lý do đặc biệt giải thích tại sao chương trình này lại cần ít nhất một hàm phải được khi báo mẫu là trong odd có một lời gọi đến even và trong even có một lời gọi đến odd. Vì vậy nếu không có hàm nào được khai báo trước thì lỗi chắc chắn sẽ xảy ra.

Rất nhiều lập trình viên kinh nghiệm khuyên rằng tất cảcác hàm nên được khai báo mẫu. Đó cũng là lời khuyên của tôi, nhất là trong trường hợp có nhiều hàm hoặc chúng rất dài, khi đó việc khai báo tất cả các hàm ở cùng một chỗ cho phép chúng ta biết phải gọi các hàm như thế nào, vì vậy tiết kiệm được thời gian.

(Theo OurViet Netwok)

Phần sau: Mảng

Theo dòng sự kiện:
Tự học C++: Mảng (05/12/2001)
Giá trị mặc định của tham số (22/11/2001)
Tự học C++: Truyền tham số theo tham số giá trị hay tham số biến (20/11/2001)
Tự học C++: Cách sử dụng void (13/11/2001)
Tự học C++: Hàm (07/11/2001)
Xem tiếp»

Video nổi bật

Công nghệ làm đất nông nghiệp ở Hà Lan nhìn thích thật
00:00 / --:--

TIN Công Nghệ NỔI BẬT

Hướng dẫn xem YouTube trong khi làm việc khác trên thiết bị iOS

Hôm nay, Quản Trị Mạng sẽ hướng dẫn các bạn một mẹo đơn giản để có thể nghe nhạc trên Youtube, nhưng vẫn có thể làm việc trong một ứng dụng khác, trên các thiết bị sử dụng iOS như iPhone, iPad hay iPod touch.

Làm thế nào để bảo vệ máy tính trước Virus internet

Những nguy cơ thiết bị luôn bị tấn công bởi virus và các loại mã độc luôn khiến cho người dùng phải đau đầu. Nó có thể khiến cho thiết bị của bạn gặp phải những vấn đề mà bạn không ngờ tới. Đó có thể là máy tính hoạt động chậm hơn, không thể khởi động hơn hay nặng hơn là máy có thể bị hỏng. Ngoài những nguy cơ về hỏng thiết bị, dữ liệu cá nhân của bạn cũng đ

Phát hiện lỗi nặng trong iOS, đe dọa phá hỏng iPhone

Lỗi này đe dọa các thiết bị chạy OS. X 10.10 và iOS 8 từ chối dịch vụ kích hoạt từ xa, thậm chí là bị phá hỏng hoặc ảnh hưởng đến hệ thống mạng mà các thiết bị này kết nối vào.

Nhận xét tin Tự học C++: Đệ quy

Ý kiến bạn đọc

Viết phản hồi

Bạn có thể gửi nhận xét, góp ý hay liên hệ về bài viết Tự học C++: Đệ quy bằng cách gửi thư điện tử tới Lien He Bao Viet Nam. Xin bao gồm tên bài viết Tu hoc C De quy ở dạng tiếng Việt không dấu. Hoặc Tự học C++: Đệ quy ở dạng có dấu. Bài viết trong chuyên đề Kinh Nghiệm của chuyên mục Công Nghệ.

study C + +: Recursive
a, declared, possibly, self-study , parameters, factorial, function, call, Int, Odd, computer

The function can call itself. This can be useful for some tasks as a method or factorial arrangement of a number. For example, to compute the factorial of a number (n), its mathematical formula as follows:.

CÓ THỂ BẠN QUAN TÂM
Xem tiếp: Công Nghệ


  • Thoi su 24h0705 Bi con dau hotgirl to dai gia Dieu Hien be bang
    Thời sự 24h(07/05): Bị con dâu hotgirl "tố", đại gia Diệu Hiền bẽ bàng

     Sát hạch công chức: Những con số lạ; Ngất lịm bên quan tài vợ và 2 con thơ; Chuyện khó hiểu xung quanh 2 gốc sưa 150 tỷ; Nổ bình gas kinh hoàng ở Bình Dương, 3 người thương vong;

  • Thoi su 24h0605 Khoi to nguoi mau Trang Tran
    Thời sự 24h(06/05): Khởi tố người mẫu Trang Trần

    VKS đề nghị bắt buộc ghi âm, ghi hình khi hỏi cung; MC U60 ăn mặc 'nhức mắt' nhất Việt Nam; Nước mắt các nghệ sĩ tiễn biệt NSƯT Anh Dũng; Khởi tố người mẫu Trang Trần; Sập cần cẩu, 3 mẹ con chết tại chỗ; Thực hư vụ hai pho tượng “biến mất” ở Thái Nguyên...là những thông tin thời sự nổi bật trong ngày 5/5.

  • Thoi su 24h55 VTV doi thu do Ha Noi sang TQ
    Thời sự 24h(5/5): VTV "dời" thủ đô Hà Nội sang TQ

    Trung ương bàn công tác nhân sự khóa tới; Hoàng Thùy Linh nóng bỏng tái xuất VTV 8 năm sau scandal; VTV nhầm lẫn "dời" thủ đô Hà Nội sang Trung Quốc; Giảng viên không có bằng tiến sĩ sẽ rời ĐH Ngoại thương ...là những thông tin thời sự nổi bật ngày 4/5.

  • Thoi su tuan qua Mit tinh dieu binh mung 40 nam thong nhat dat nuoc
    Thời sự tuần qua: Mít tinh, diễu binh mừng 40 năm thống nhất đất nước

    Thủ tướng: Vượt lên khác biệt, chân thành hòa hợp dân tộc; Truy điệu 2 phi công trong vụ máy bay Su-22 rơi; Bí mật 16 tấn vàng trong ngày giải phóng; Tàu chở 48 du khách bị đâm chìm trên vịnh Hạ Long; NSƯT Anh Dũng chia tay cõi trần, về với vợ Phương Thanh ..là những thông tin thời sự nổi bật tuần qua.

  • Thoi su 24h294 Sa Pa xu phat khach san 46 trieudem
    Thời sự 24h(29/4): Sa Pa xử phạt khách sạn 46 triệu/đêm

    Hàng triệu người hành hương về đất Tổ; Giám đốc Công an TP.HCM được thăng hàm Trung tướng; Cửa ngõ Thủ đô chật cứng ngày đầu nghỉ lễ; Chủ tịch Sa Pa xử phạt vụ khách sạn 46 triệu/đêm; Xe khách 47 chỗ “nhồi” tới 105 người;... là những thông tin thời sự đáng chú ý ngày 28/4.

  • Ket cuc buon cua thu uong ruou trong gioi tre
    Kết cục buồn của “thú” uống rượu trong giới trẻ

    Giữa mâm chỉ bày vỏn vẹn bát nước chấm, hai chục chiếc chân vịt luộc vừa được mua với giá 20 nghìn đồng nhưng chai rượu voodka cỡ lớn của Thủy (nam sinh trường Đại học Xây dựng Hà Nội) và nhóm bạn đã vơi đi phân nửa...

  • Hon loan o cong vien nuoc Ho Tay
    Hỗn loạn ở công viên nước Hồ Tây

    Chen lấn, xô đẩy, bất chấp nguy hiểm trèo rào chỉ vì được tắm miễn phí sẽ đem đến những bài học xấu xí cho trẻ nhỏ...

  • Tranh cai quy dinh nop tien de thoat an tu hinh
    Tranh cãi quy định nộp tiền để thoát án tử hình

    Nhận thức của xã hội và cả thẩm phán về mục đích áp dụng hình phạt là nhằm trừng trị, răn đe hơn là giáo dục phòng ngừa. ------------ Xem thêm: Tranh cãi quy định nộp tiền để thoát án tử hình, http://vietbao.vn/tp/Tranh-cai-quy-dinh-nop-tien-de-thoat-an-tu-hinh/10916606/ Tin nhanh Việt Nam ra thế giới vietbao.vn

  • Phi cong va tiep vien VNA bi bat tai Han Quoc
    Phi công và tiếp viên VNA bị bắt tại Hàn Quốc

    Cục Hàng không VN đang tiến hành rà soát lại tất cả các khâu soi chiếu an ninh tại Cảng Hàng không Quốc tế Nội Bài để lãm rõ nguyên nhân phi công và tiếp viên Vietnam Airlines có thể “qua mặt” anh ninh vận chuyển 6kg vàng từ..

  • Dieu chinh gia dich vu y te
    Điều chỉnh giá dịch vụ y tế

    Theo phân tích từ Bộ Y tế, việc điều chỉnh giá dịch vụ y tế, đối với người bệnh có thẻ bảo hiểm y tế (BHYT) được lợi đầu tiên vì được thụ hưởng dịch vụ y tế chất lượng tốt hơn...

  • Tin An ninh Phap luat tuan qua 1904 2504
    Tin An ninh - Pháp luật tuần qua (19/04 - 25/04)

    Tranh cãi quy định nộp tiền để thoát án tử hình; “Ngáo đá” và những hành vi cuồng loạn; Đại gia mua dâm người mẫu: Có gan chơi không có gan chịu; Cảnh báo: Trộm đột nhập đã vào “mùa”; Tử hình sát thủ tuổi 20 liên tiếp cướp, giết 3 người; Phút ăn năn của nữ sinh cầm dao đâm bạn để trả thù cho em gái;......là những tin đáng chú ý trong tuần.

  • Tong hop Doi song tuan qua 194 254
    Tổng hợp Đời sống tuần qua (19/4 - 25/4)

    Trào lưu nhắn tin "Em yêu anh" gửi chồng đang tạo nên cơn sốt khắp cộng đồng mạng; Vụ hỗn loạn ở CV nước Hồ Tây và những bài học rút ra cho các bậc phụ huynh; Những câu chuyện tình cảm động; Những tấm gương người tốt việc tốt trong đời sống; Nhiều câu chuyện đáng suy ngẫm cùng rất nhiều những thông tin an toàn thực phẩm đáng chú ý tuần qua...

  • Nghin le chuyen tuan qua 1904 2504
    Nghìn lẻ chuyện tuần qua (19/04 - 25/04)

    Hỗn loạn ở công viên nước Hồ Tây; Ngành Y kỳ vọng đổi màu trang phục để bác sĩ không bị oan; Bộ Y tế đề xuất bổ sung quyền được chết; Công bố đường dây nóng phản ánh giao thông dịp nghỉ lễ 30/4; Những hình ảnh lịch sử ngày 30/4... là những tin tức nổi bật được dư luận quan tâm trong tuần qua.

  • Su kien quoc te noi bat 194 254
    Sự kiện quốc tế nổi bật (19/4 - 25/4)

    Thảm họa lật thuyền khiến 900 người chết ở Địa Trung Hải; Thủ tướng Hàn Quốc, Lee Wan-koo đã tuyên bố từ chức; các hành động hung hăng của Trung Quốc trên biển Đông và phản ứng của Mỹ - Nhật.... là những tin tức chính trong tuần qua.

  • Toan canh kinh te tuan 1904 25042015
    Toàn cảnh kinh tế tuần 19/04 - 25/04/2015

    Thanh tra Tổng Cục Thuế vừa yêu cầu Metro phải giảm lỗ 335 tỷ đồng, truy thu thuế tới 62 tỷ đồng theo đó tổng giá trị vi phạm cần xử lý đã lên tới 507 tỷ đồng, người dân đang rất "sốc" khi nhận được hóa đơn tiền điện tháng 4 vì số tiền phải trả thêm quá nhiều tiền so với tháng trước dù cùng số tiêu thụ, năm 2014 ngành đường sắt thu được 400 tỉ nhưng chi lên tới 2.000 tỉ đồng/năm gấp 5 lần khoản thu, ------------ Xem thêm: Toàn cảnh kinh tế tuần 19/04 - 25/04/2015, http://vietbao.vn/Kinh-te/Toan-canh-kinh-te-tuan-1904-25042015/2147556119/47/ Tin nhanh Việt Nam ra thế giới vietbao.vn