Chúng tôi được cung cấp một chuỗi với giả sử str có độ dài bất kỳ và nhiệm vụ là tính số lượng phụ âm trong chuỗi đã cho bằng cách sử dụng cả phương thức lặp lại và đệ quy.
Phụ âm là những bảng chữ cái không phải là nguyên âm, tức là bảng chữ cái ngoại trừ a, i, e, o, u được coi là phụ âm. Vì vậy, trong chương trình dưới đây, chúng ta cần tìm số lượng các bảng chữ cái khác với các bảng chữ cái này trong chuỗi.
Cả Đệ quy và Lặp lại đều thực hiện lặp lại tập hợp các lệnh. Đệ quy là khi một câu lệnh trong một hàm gọi chính nó nhiều lần. Lặp lại là khi một vòng lặp lặp đi lặp lại thực hiện cho đến khi điều kiện điều khiển trở thành sai. Sự khác biệt cơ bản giữa đệ quy và lặp là đệ quy là một quá trình, luôn được áp dụng cho một hàm và phép lặp được áp dụng cho tập hợp các lệnh mà chúng ta muốn thực hiện lặp lại.
Ví dụ
Input − string str = “tutorials point” Output − count is 8
Giải thích - Trong chuỗi str đã cho có tổng cộng 8 phụ âm và đó là t, t, r, l, s, p, n và t.
Input − string str = “a e io u” Output − count is 0
Giải thích - Trong chuỗi str đã cho không có phụ âm thay vào đó nó chỉ có các nguyên âm nên số đếm là 0.
Lặp lại
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Nhập chuỗi vào một biến, giả sử str
-
Tính độ dài của chuỗi đã cho bằng cách sử dụng hàm length () sẽ trả về một giá trị nguyên theo số ký tự trong một chuỗi
-
Lấy một biến tạm thời sẽ lưu trữ số lượng phần tử.
-
Bắt đầu vòng lặp cho tôi đến 0 cho đến khi tôi nhỏ hơn độ dài của một chuỗi
-
Bên trong vòng lặp, hãy kiểm tra IF str [i] là phụ âm rồi tăng giá trị của số đếm lên 1
-
Trả lại số lượng
-
In kết quả.
Ví dụ
// Iterative CPP program #include <iostream> using namespace std; // Function to check for consonant bool consonant(char ch){ // To handle lower case ch = toupper(ch); return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90; } //function to count consonant int countconsonants(string s){ int result = 0; for (int i = 0; i < s.length(); i++){ // To check is character is Consonant if (consonant(s[i])){ ++result; } } return result; } // main function int main(){ string s = "wx abc def"; cout <<"count is: "<<countconsonants(s); return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau
Số lượngcount is: 6
Đệ quy
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Nhập chuỗi vào một biến, giả sử str
-
Tính độ dài của chuỗi đã cho bằng cách sử dụng hàm length () sẽ trả về một giá trị nguyên theo số ký tự trong một chuỗi
-
Lấy một biến tạm thời sẽ lưu trữ số lượng phần tử.
-
Tạo một hàm đệ quy sẽ gọi chính nó để tính toán các phụ âm trong một chuỗi
-
Kiểm tra kích thước IF là 1 rồi trả về str [0].
-
Sau đó, trả về recursive_call_to_ Chức năng dưới dạng (str, size-1) + kiểm tra xem một ký tự có phải là chuỗi hay không (str [size-1])
Ví dụ
// Recursive CPP program #include <iostream> using namespace std; // Function to check for consonant bool consonant(char ch){ // To convert the lower case ch = toupper(ch); return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90; } // to count total number of consonants int consonantcount(string str, int n){ if (n == 1){ return consonant(str[0]); } return consonantcount(str, n - 1) + consonant(str[n-1]); } int main(){ string str = "wx abc def"; cout <<"count is: "<<consonantcount(str, str.length()); return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -
Số lượngcount is: 6