LATEST

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 đó.

bai4 01 png

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ả:

bai4 02 png

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ả:

bai4 03 png

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

Cùng chuyên mục:

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán tính lũy thừa trong C / C++

Thuật toán tính lũy thừa trong C / C++

Top