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

Nghịch dại khi phá hủy pin trên điện thoại
00:00 / --:--

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

Apple có công nghệ "khủng" giúp iPhone chụp ảnh cực đẹp

 iPhone liên tục cung cấp những trải nghiệm camera tốt hơn so với bất cứ smartphone nào, nhưng Apple có thể còn đưa ra những trải nghiệm camera trên iPhone tốt hơn nữa, nhờ bản quyền mới nhất mà hãng vừa đăng ký.

Hướng dẫn test máy Galaxy Note Edge xách tay trước khi mua

Samsung Galaxy Note Edge là điện thoại có thiết kế phá cách đến từ Samsung. Bài viết này chúng tôi sẽ hướng dẫn các bạn cách test máy điện thoại Samsung Galaxy Note Edge (SM-N915S) xách tay Hàn Quốc chuẩn và yên tâm nhất. Hiện nay có khá nhiều phiên bản của điện thoại này ở thị trường Việt Nam và những thông tin được nêu dưới đây có thể giúp bạn chọn mua đượ

Những tính năng cuốn hút trên iPhone 6 khiến người dùng “mê mẩn”

Bạn đã bao giờ tự hỏi mình rằng, iPhone 6 của Apple có những tính năng gì mà khiến cho rất nhiều người dùng trên toàn thế giới phải mê mẩn, ngoài thiết kế vô cùng sang trọng và bắt mắt, dòng sản phẩm này cũng còn rất nhiều những tính năng thú vị và bổ ích cho người dùng mà có thể bạn chưa biết. Trong bài viết dưới đây, các bạn hãy cùng tôi tìm hiểu xem, iPho

Khắc phục lỗi hao pin trên iOS 8.2

Nếu bạn đã nâng cấp lên iOS 8.2 và đang than phiền về thời lượng pin, dưới đây là cách khắc phục.Nếu bạn đã nâng cấp lên iOS 8.2 và đang than phiền về thời lượng pin, dưới đây là cách khắc phục.

'Mách' bạn cách gửi & nhận SMS khi... quên điện thoại Android

MightyText là ứng dụng khá cần thiết trong những lúc bạn không mang smartphone theo bên mình nhưng vẫn muốn cập nhật hộp tin SMS để không bỏ lỡ những tin quan trọng. Đồng thời, có thể nhận và soạn tin nhắn SMS từ xa.

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 tuan qua 13 nguoi chet trong vu sap gian giao
    Thời sự tuần qua: 13 người chết trong vụ sập giàn giáo

    Tạm ngừng thi công lấn sông Đồng Nai; Công an HN không can thiệp phát ngôn của ĐH Lâm nghiệp; Khánh Thi bức xúc về tin đồn "yêu người kém 12 tuổi"; Vụ ly hôn 1.500 lượng vàng của đại gia Miền Tây; Sập giàn giáo ở Formosa: Kết thúc cứu nạn, 13 người chết; Máy bay rơi và gãy đôi ở Bình Thuận...là những tin tức thời sự nổi bật tuần qua.

  • Thoi su trong ngay May bay roi o Binh Thuan
    Thời sự trong ngày: Máy bay rơi ở Bình Thuận

    Thứ trưởng Bộ Tài nguyên lên tiếng vụ Đồng Nai lấp sông; Sập giàn giáo ở Formosa: Kết thúc cứu nạn, 13 người chết; Máy bay rơi và gãy đôi ở Bình Thuận;Thực hư ca phẫu thuật toàn đỉa tại BV Bạch Mai; Thanh niên làm 'chuyện người lớn' với 2 nữ sinh lớp 8...là những thông tin thời sự nổi bật trong ngày 26/3.

  • Thoi su tuan qua Dinh chi can bo vu chat cay xanh
    Thời sự tuần qua: Đình chỉ cán bộ vụ chặt cây xanh

    Lại lùi luật Biểu tình sang 2016; Vụ chặt cây: Đình chỉ hàng loạt cán bộ Sở Xây dựng; Học sinh Trà Vinh đánh bạn: Đình chỉ cả hiệu trưởng, hiệu phó; Công bố 10 gương mặt trẻ tiêu biểu 2014; Vớ được clip sex trong máy tính cũ, đòi chuộc 5 tỷ; Bắt tạm giam hoa hậu người Việt tại Nga...là những thông tin thời sự nổi bật tuần qua.

  • Thoi su 24h213 Ha Noi trong nham cay vang tam
    Thời sự 24h(21/3): Hà Nội trồng nhầm cây vàng tâm?

    Vụ bất thường dự án triệu đô: Công an vào cuộc; Hàng cây mới vừa được thay thế trên phố Hà Nội; Đại gia bị hoa hậu lừa 16 tỷ đồng là ai?; Thủy quái Mekong trong nồi lẩu trăm triệu đại gia Sài Gòn; Vũ Hoàng Điệp: Kinh tởm với mối tình đầu dài 2 năm!; Bất ngờ gục chết khi CSGT kiểm tra giấy tờ...là những thông tin thời sự nổi bật trong ngày 21/3.

  • Thoi su 24h203 Bat tam giam mot hoa hau
    Thời sự 24h(20/3): Bắt tạm giam một hoa hậu

    Chi tiết dự kiến lịch thi THPT quốc gia; Chủ tịch HN: Không có chuyện “kiếm chác” từ việc chặt 6.700 cây; Gần 150 xe tiền tỷ của đại gia Dũng "mặt sắt" phủ bụi; Bầu Hiển đề nghị mua sân bay Phú Quốc...

  • Hang loat nu sinh hoc sinh mat tich bi an
    Hàng loạt nữ sinh, học sinh mất tích bí ẩn

    Chỉ trong vòng 10 ngày đã có 3 nữ sinh viên (SV) mất tích, trong đó một nữ sinhđã tử vong. Chiều 26/3, Ths Trịnh Hữu Chung, Trưởng phòng Công tác học sinh sinh viên (HSSV) Trường ĐH quốc tế Hồng Bàng cho biết: Riêng SV Ng. Tr...

  • Sap gian giao o Formosa
    Sập giàn giáo ở Formosa

    Vào lúc 10h ngày 27/3/2015, tại hội trường Tỉnh uỷ Hà Tĩnh diễn ra cuộc họp báo về vụ sập giàn giáo ở Hà Tĩnh gây thương vong hàng chục người tại công trường Formosa.

  • Viet Nam tieu thu gan 70 tan vang
    Việt Nam tiêu thụ gần 70 tấn vàng?

    Chúng ta phải hiểu rằng việc nhập vàng vào Việt Nam không phải chỉ để tăng dự trữ tiền tệ mà còn có nhiều mục đích khác nữa.

  • Coi do Thao bo luon nhan cach
    Cởi đồ - Tháo bỏ luôn nhân cách

    Chỉ trong vòng 4 ngày (12/3 - 15/3) dân mạng được một phen "choáng váng" khi chứng kiến 2 màn "tự nguyện" cởi đồ giữa chốn đông người của 2 cô gái trẻ.

  • Ha noi chat ha 6700 cay xanh
    Hà nội chặt hạ 6.700 cây xanh

    Chứng kiến những hàng cây bị đốn hạ nhóm Trắng đã chế lại lời ca khúc Một “rừng” người – một đời cây gây xúc động. ------------ Xem thêm: Hà nội chặt hạ 6.700 cây xanh, http://vietbao.vn/tp/Ha-noi-chat-ha-6700-cay-xanh/8770793/ Tin nhanh Việt Nam ra thế giới vietbao.vn

  • Su kien quoc te noi bat 223 283
    Sự kiện quốc tế nổi bật (22/3 - 28/3)

    Israel do thám các cuộc hội đàm chương trình hạt nhân Iran; Người cha sáng lập nước Singapore, ông Lý Quang Diệu qua đời ở tuổi 91; Tai nạn máy bay Airbus 320 mang số hiệu 4U9525 rơi ở Pháp khiến 150 người bỏ mạng... là những tin chính trong tuần qua. ------------ Xem thêm: Sự kiện quốc tế nổi bật (22/3 - 28/3), http://vietbao.vn/The-gioi/Su-kien-quoc-te-noi-bat-223-283/2147548631/433/ Tin nhanh Việt Nam ra thế giới vietbao.vn

  • Toan canh Showbiz tuan 2203 2803
    Toàn cảnh Showbiz tuần (22/03 – 28/03)

    Vũ Ngọc Đãng làm phim 18 tỷ của Ngọc Trinh, Tin đồn Phương Nga vướng vòng lao lý vì...'ngải quật', Bằng Kiều bị chỉ trích vì ‘rũ bỏ’ 13 năm công sức của vợ cũ, Nhiều bằng chứng cho thấy Khánh Thi - Phan Hiển yêu nhau, Đám cưới Bebe Phạm và Dustin Nguyễn, Lee Min Ho và Suzy (MissA) đang hẹn hò, Zayn Malik chính thức rời One Direction sau 5 năm gắn bó, Miley Cyrus và bạn trai tình cảm, bác bỏ tin đồn chia tay, Angelina Jolie truyền can đảm cho phụ nữ ung thư, ... là những thông tin giải trí nổi bật trong tuần qua. ------------ Xem thêm: Toàn cảnh Showbiz tuần (22/03 – 28/03), http://vietbao.vn/The-gioi-giai-tri/Toan-canh-Showbiz-tuan-2203-2803/2147548589/49/ Tin nhanh Việt Nam ra thế giới vietbao.vn

  • Luot nhanh nhieu tin suc khoe quan trong tuan qua 23293
    Lướt nhanh nhiều tin sức khỏe quan trọng tuần qua (23-29/3)

    Vụ việc "Bác sĩ từ chối mổ vì biết bệnh nhân là người viết báo" thu hút sự chú ý của dư luận, công tác y tế cứu nạn nhanh chóng cho sự cố sập giàn giáo ở Vũng Áng, nhiều cảnh báo các bệnh mùa hè bắt đầu "vào mùa", thêm những lời khuyên bổ ích bảo vệ sức khỏe lúc giao mùa... là những thông tin sức khỏe quan trọng tuần qua. ------------ Xem thêm: Lướt nhanh nhiều tin sức khỏe quan trọng tuần qua (23-29/3), http://vietbao.vn/Suc-khoe/Luot-nhanh-nhieu-tin-suc-khoe-quan-trong-tuan-qua-23293/2147548577/248/ Tin nhanh Việt Nam ra thế giới vietbao.vn

  • Tin An ninh Phap luat tuan qua 2203 2803
    Tin An ninh - Pháp luật tuần qua (22/03 - 28/03)

    Hàng loạt nữ sinh, học sinh mất tích bí ẩn; “Mượn danh” lãnh đạo cấp cao để lừa đảo; Đằng sau câu chuyện Hoa hậu Trương Hồ Phương Nga bị bắt; Trùm ma túy thời Youtube; Tử tù Hồ Duy Hải: Có đủ 4 căn cứ để kháng nghị; Lời xin lỗi muộn của nhóm côn đồ tại phiên tòa;......là những tin đáng chú ý trong tuần. ------------ Xem thêm: Tin An ninh - Pháp luật tuần qua (22/03 - 28/03), http://vietbao.vn/An-ninh-Phap-luat/Tin-An-ninh-Phap-luat-tuan-qua-2203-2803/2147548553/218/ Tin nhanh Việt Nam ra thế giới vietbao.vn

  • Nghin le chuyen tuan qua 2203 2803
    Nghìn lẻ chuyện tuần qua (22/03 - 28/03)

    Toàn cảnh sập giàn giáo công trường Formosa - Hà Tĩnh; Trực thăng rơi ở đảo Phú Quý- Bình Thuận; Toàn văn 21 câu trả lời vụ chặt hạ cây xanh của Hà Nội; Bác sĩ từ chối mổ cho người viết báo; Học sinh bắt buộc đội mũ bảo hiểm khi đi xe đạp điện... là những tin tức nổi bật được dư luận quan tâm trong tuần qua. ------------ Xem thêm: Nghìn lẻ chuyện tuần qua (22/03 - 28/03), http://vietbao.vn/Xa-hoi/Nghin-le-chuyen-tuan-qua-2203-2803/2147548574/157/ Tin nhanh Việt Nam ra thế giới vietbao.vn