Ta yêu cầu người dùng nhập giới hạn hoặc số hạng của các số tự nhiên cần in. Chúng tôi lưu trữ giá trị đó bên trong giới hạn biến. Chúng tôi chuyển giá trị này cho một hàm có tên là display()
Hàm display() bên trong
Chúng tôi kiểm tra xem số có khác 0 hay không, trong trường hợp đó, chúng tôi gọi hàm display() tương tự theo cách đệ quy và chuyển (num-1) cho nó. Trong khối khác, chúng tôi viết điều kiện cơ sở, nghĩa là trả lại điều khiển cho hàm gọi nếu num bằng 0
Điều này in các số tự nhiên từ 1 đến giới hạn đầu vào của người dùng
Thí dụ
Nếu giới hạn = 5. Chúng tôi sao chép giá trị của giới hạn thành num. Vậy số = 5
numChức năng gọiChức năng được gọi5main()display(5)5display(5)display(4)4display(4)display(3)3display(3)display(2)2display(2)display(1)1display(1)display(0)returnTrả lại giá trị – Điều khiển dịch chuyển trở lại
HàmGiá trị trả vềreturn;hiển thị(0)1hiển thị(1)2hiển thị(2)3hiển thị(3)4hiển thị(4)5Để biết danh sách tất cả các cuộc phỏng vấn lập trình c / câu hỏi và câu trả lời viva, hãy truy cập. Phỏng vấn lập trình C / Viva Q&A List
Để biết danh sách video hướng dẫn miễn phí về ngôn ngữ lập trình C đầy đủ, hãy truy cập. Lập trình C. Người mới bắt đầu Tiến tới Chuyên gia
Đầu vào. N, đại diện cho số lần bạn muốn in câu lệnh. đầu ra. Tuyên bố cho N lần
Đầu tiên, chúng ta tạo một lớp. Sau đó, chúng ta cần khởi tạo phương thức khởi tạo của lớp bằng cách viết câu lệnh bạn muốn in bên trong câu lệnh cout/print. Ý tưởng cơ bản được sử dụng ở đây là “Không. số lần bạn tạo đối tượng của lớp, hàm tạo của lớp đó được gọi nhiều lần. ”
Trong bài đăng này, chúng ta sẽ tìm hiểu cách in tên hoặc chuỗi nhiều lần mà không cần sử dụng bất kỳ vòng lặp hoặc hàm nào. Chúng ta có thể dễ dàng làm điều đó bằng cách sử dụng một vòng lặp sẽ chạy n lần và in tên trong n lần. Tương tự, chúng ta cũng có thể viết một hàm đệ quy để in tên n lần. Tuy nhiên, thật khó để làm điều đó mà không sử dụng vòng lặp hoặc hàm
đi đến
Chúng ta có thể giải quyết nó bằng cách sử dụng goto. goto có thể được sử dụng để di chuyển điều khiển hiện tại đến một dòng cụ thể. Vì vậy, chúng tôi sẽ sử dụng một biến đếm sẽ đếm số lần tên được in và bằng cách sử dụng goto, chương trình sẽ chạy trong một vòng lặp
Hàm gọi chính nó được gọi là hàm đệ quy. Và, kỹ thuật này được gọi là đệ quy
Làm thế nào đệ quy hoạt động?
void recurse() { .. . ... recurse(); .. . ... } int main() { .. . ... recurse(); .. . ... }Đệ quy tiếp tục cho đến khi một số điều kiện được đáp ứng để ngăn chặn nó
Để ngăn chặn đệ quy vô hạn, nếu. câu lệnh khác (hoặc cách tiếp cận tương tự) có thể được sử dụng khi một nhánh thực hiện cuộc gọi đệ quy và nhánh khác thì không
Thí dụ. Tổng các số tự nhiên sử dụng đệ quy
#include int sum(int n); int main() { int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; } int sum(int n) { if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; }đầu ra
Enter a positive integer:3 sum = 6Ban đầu, sum() được gọi từ hàm main() với số được truyền dưới dạng đối số
Giả sử, giá trị của n bên trong sum() ban đầu là 3. Trong lần gọi hàm tiếp theo, 2 được chuyển đến hàm sum(). Quá trình này tiếp tục cho đến khi n bằng 0
Khi n bằng 0, điều kiện if không thành công và phần else được thực thi trả về tổng các số nguyên cuối cùng cho hàm main()
Ưu điểm và nhược điểm của đệ quy
Đệ quy làm cho chương trình thanh lịch. Tuy nhiên, nếu hiệu suất là quan trọng, hãy sử dụng các vòng lặp thay vì đệ quy thường chậm hơn nhiều
Điều đó đang được nói, đệ quy là một khái niệm quan trọng. Nó thường được sử dụng trong cấu trúc dữ liệu và giải thuật. Ví dụ, người ta thường sử dụng đệ quy trong các bài toán như duyệt cây
Vấn đề
Cố gắng in tên 10 lần mà không sử dụng bất kỳ vòng lặp hoặc câu lệnh goto nào trong ngôn ngữ lập trình C
Giải pháp
Nói chung, các câu lệnh lặp được sử dụng để lặp lại khối mã cho đến khi điều kiện sai
Ví dụ 1
Trong chương trình này, chúng tôi đang cố gắng in tên 10 lần mà không sử dụng câu lệnh vòng lặp hoặc goto
Bản thử trực tiếp
#include void printname(char* name,int count){ printf("%03d : %s",count+1,name); count+=1; if(count<10) printname(name,count); } int main(){ char name[50]; printf("
Enter you name :"); scanf("%s",name); printname(name,0); return 0; }
đầu ra
Enter you name :tutorialspoint 001 : tutorialspoint 002 : tutorialspoint 003 : tutorialspoint 004 : tutorialspoint 005 : tutorialspoint 006 : tutorialspoint 007 : tutorialspoint 008 : tutorialspoint 009 : tutorialspoint 010 : tutorialspointví dụ 2
Dưới đây là chương trình in tên của bạn 10 lần bằng cách sử dụng bất kỳ vòng lặp hoặc câu lệnh goto nào –
Bản thử trực tiếp
#include int main(){ char name[50],i; printf("Enter you name :"); scanf("%s",name); for(i=0;i<10;i++){ printf("%s
",name); } return 0; }