Hiển thị dãy Fibonanci trong C / C++
Trong bài viết này, codehow sẽ hướng dẫn các bạn hiển thị dãy Fibonanci trong C / C++. Đây là một khái niệm rất mới đối với các bạn bắt đầu học lập trình, tuy nhiên nó rất quen thuộc với các bạn đã từng học lập trình ở cơ sở.
Chúng ta sẽ cùng nhau tìm hiểu về dãy Fibonanci là gì? Cách hiển thị dãy Finonanci trong C / C++ như thế nào? Hãy cùng mình bắt đầu thôi nhé.
Dãy Finonanci là gì?
Dãy Fibonanci là một dãy số vô hạn các chữ số tự nhiên mà tuân theo một quy luật như sau:
- Hai phần tử đầu tiên bắt đầu từ 0 và 1 hoặc 1 và 1.
- Mỗi phần tử sau đó luôn bằng tổng hai phần tử trước đó.
Ví dụ: Hai phần tử đầu tiên bắt đầu là 1 và 1, thì phần tử tiếp theo là 1 + 1 = 2, phần tử tiếp theo nữa sẽ là 1 + 2 = 3, cứ như vậy cho đến vô cùng.
Dãy Fibonanci là dãy số vô hạn và không có điểm dừng, vì vậy nếu chúng ta hiển thị dãy trong lập trình, cẩn thận bị lặp vô hạn nhé.
Vậy làm thế nào để có thể hiển thị được dãy Fibonanci trong chương trình C / C++, các bạn hãy xem ở phần tiếp theo nha.
Hiển thị dãy Fibonanci trong C / C++ sử dụng vòng lặp for
Trước khi đi vào viết chương trình hiển thị dãy Fibonanci trong C / C++, các bạn hãy xem qua thuật toán của nó dưới đây đã nhé.
Giả sử mình có ba biến first_term (số đầu tiên), second_term (số thứ hai), next_term (số tiếp theo). Biến count là số lượng số muốn hiển thị trong dãy Fibonanci. Khi đó thuật toán của nó là:
for ( i = 0 ; i < count ; i++ ) { if ( i <= 1 ) next_term = i; else { next_term = first_term + second_term; first_term = second_term; second_term = next_term; } cout<<next_term<<endl; }
Để mình giải thích thuật toán nhé. Đầu tiên chúng ta sẽ sử dụng vòng lặp for để lặp từ 0 đến count (số lượng số muốn hiển thị trong dãy Fibonanci).
- Nếu i <= 1 thì next_term sẽ bằng i.
- Ngược lại, chúng ta sẽ sử dụng thuật toán như sau:
- Số tiếp theo sẽ bằng số đầu tiên cộng cho số thứ hai: next_term = first_term + second_term.
- Sau khi cộng xong, ta gán số thứ hai cho số thứ nhất, số tiếp theo cho số thứ hai để thực hiện lần lặp tiếp theo. Cứ như vậy cho đến khi kết thúc vòng lặp.
Ví dụ: Viết chương trình yêu cầu người dùng nhập vào một số lớn hơn 1, nếu nhỏ hơn một thì yêu cầu nhập lại. HIển thị dãy Fibonanci với số lượng phần tử bằng số do người dùng nhập vào.
Chương trình C:
#include <stdio.h> int main(void) { int count, first_term = 0, second_term = 1, next_term, i; printf("Nhập vào số lượng các số trong chuỗi Fibonacci: "); scanf("%d", &count); printf("%d số đầu tiên trong dãy Fibonacci là: \n", count); for ( i = 0 ; i < count ; i++ ) { if ( i <= 1 ) next_term = i; else { next_term = first_term + second_term; first_term = second_term; second_term = next_term; } printf("%d \n", next_term); } printf("\n----------------------------\n"); printf("chương trình này được đăng tại codehow.net"); }
Chương trình C++:
#include <iostream> using namespace std; int main() { int count, first_term = 0, second_term = 1, next_term, i; cout<<"Nhập vào số lượng các số trong chuỗi Fibonacci"<<endl; cin>>count; cout<<count<<" số đầu tiên trong dãy Fibonacci là: "<<endl; for ( i = 0 ; i < count ; i++ ) { if ( i <= 1 ) next_term = i; else { next_term = first_term + second_term; first_term = second_term; second_term = next_term; } cout<<next_term<<endl; } cout<<"\n----------------------------\n"; cout<<"chương trình này được đăng tại codehow.net"; }
Kết quả:
Hiển thị dãy Finonanci trong C / ++ sử dụng hàm đệ quy
Trong chương trình này, thay vì sử dụng vòng lặp for, mình sẽ sử dụng ham đệ quy để hiển thị dãy Fibonanci trong C / C++. Hãy xem đoạn chương trình dưới đây để hiểu hơn về cách thực hiện nhé.
Chương trình C:
#include <stdio.h> int fibonacci_series(int); int main(void) { int count, c = 0, i; printf("Nhập vào số lượng các số trong chuỗi Fibonacci: "); scanf("%d", &count); printf("\nChuỗi Fibonacci là: \n"); for ( i = 1 ; i <= count ; i++ ) { printf("%d \n",fibonacci_series(c)); c++; } printf("\n----------------------------\n"); printf("chương trình này được đăng tại codehow.net"); } //định nghĩa hàm fibonacci_series() để trả về số Fibonanci int fibonacci_series(int num) { if ( num == 0 ) return 0; else if ( num == 1 ) return 1; else return ( fibonacci_series(num-1) + fibonacci_series(num-2) ); }
Chương trình C++:
#include <iostream> using namespace std; //khai báo hàm fibonacci_series() int fibonacci_series(int); int main() { int count, c = 0, i; cout<<"Nhập vào số lượng các số trong chuỗi Fibonacci: ";cin>>count; cout<<"\nChuỗi Fibonacci là: \n"; for ( i = 1 ; i <= count ; i++ ) { cout<<fibonacci_series(c)<<endl; c++; } cout<<"\n----------------------------\n"; cout<<"chương trình này được đăng tại codehow.net"; } //định nghĩa hàm fibonacci_series() để trả về số Fibonanci int fibonacci_series(int num) { if ( num == 0 ) return 0; else if ( num == 1 ) return 1; else return ( fibonacci_series(num-1) + fibonacci_series(num-2) ); }
Kết quả:
Như vậy là chúng ta đã cùng nhau tìm hiểu về cách hiển thị dãy Fibonanci trong C / C++. Các bạn hãy luyện tập thật nhiều để rèn luyện tính tư duy logic. Hãy xem nhiều bài tập hơn tại serries bài tập C / C++ codehow nhé !!