19/11/2018, 19:42

Dãy số Fibonacci trong C++

Học lập trình C++ Quy luật của dãy số Fibonacci : số tiếp theo bằng tổng của 2 số trước, 2 số đầu tiên của dãy số là 0, 1. Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, … Có 2 cách để viết chương trình dãy số Fibonacci trong C++ Tính dãy số Fibonacci trong C++ không ...

Học lập trình C++

Quy luật của dãy số Fibonacci: số tiếp theo bằng tổng của 2 số trước, 2 số đầu tiên của dãy số là 0, 1. Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

Có 2 cách để viết chương trình dãy số Fibonacci trong C++

  • Tính dãy số Fibonacci trong C++ không dùng phương pháp đệ quy
  • Tính dãy số Fibonacci trong C++ sử dụng phương pháp đệ quy

Tính dãy số Fibonacci không dùng phương pháp đệ quy

Ví dụ chương trình tính dãy số Fibonacci không sử dụng phương pháp đệ quy:

File: FibonacciExample1.cpp

/**
 * Tinh day so Fibonacci KHONG dung phuong phap de quy
 *  
 * @author viettuts.vn
 */

#include <iostream>
 
using namespace std;

/**
 * Tinh so Fibonacci thu n
 * 
 * @param n: chi so cua so Fibonacci tinh tu 0 
 *           vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2
 * @return So Fibonacci thu n
 */
int fibonacci(int n) {
    int f0 = 0;
    int f1 = 1;
    int fn = 1;
    int i;

    if (n < 0) {
        return -1;
    } else if (n == 0 || n == 1) {
        return n;
    } else {
        for (i = 2; i < n; i++) {
            f0 = f1;
            f1 = fn;
            fn = f0 + f1;
        }
    }
    return fn;
}

/**
 * Ham main
 */
int main() {
	int i;
    cout << "10 so dau tien cua day so Fibonacci: 
";
    for (i = 0; i < 10; i++) {
        cout << fibonacci(i) << " ";
    }
}

Kết quả:

10 so dau tien cua day so Fibonacci: 
0 1 1 2 3 5 8 13 21 34 

Tính dãy số Fibonacci sử dụng phương pháp đệ quy

Ví dụ chương trình tính dãy số Fibonacci sử dụng phương pháp đệ quy:

File: FibonacciExample2.cpp

/**
 * Tinh day so Fibonacci bang phuong phap de quy
 *  
 * @author viettuts.vn
 */
 
#include <iostream>
 
using namespace std;

/**
 * Tinh so Fibonacci thu n
 * 
 * @param n: chi so cua so Fibonacci tinh tu 0 
 *           vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2
 * @return So Fibonacci thu n
 */
int fibonacci(int n) {
    if (n < 0) {
        return -1;
    } else if (n == 0 || n == 1) {
        return n;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

/**
 * Ham main
 */
int main() {
	int i;
    cout << "10 so dau tien cua day so Fibonacci: 
";
        for (i = 0; i < 10; i++) {
        cout << fibonacci(i) << " ";
    }
}

Kết quả:

10 số đầu tiên của dãy số fibonacci: 
0 1 1 2 3 5 8 13 21 34 
Học lập trình C++
0