01/10/2018, 14:41

Thắc mắc về kiểu dữ liệu lớn hơn unsigned long long

Thật sự em cũng không biết nên đặt tiêu đề thế nào cho ngắn gọn dễ hiểu nên mong mọi người thông cảm ạ.

Em đang làm về dãy fibonacci giới hạn là 100 số đầu tiên

Nhưng bắt đầu từ số 94 đã bị tràn số, không biết còn kiểu dữ liệu nào chứa được hết 100 số đó không ạ.?

Mong mọi người giúp đỡ em với không ạ?

Câu hỏi thêm là em code như thế này có tối ưu cho ạ, hay phải dùng đệ quy ạ?

#include <stdio.h>

void xuatmang(unsigned long long a[], int length) {
    for (int i = 0; i < length; ++i) {
        printf("A[%d] = %llu
", i, a[i]);
    }
}

void fibonacci(unsigned long long a[], int length) {
    for (int i = 2; i < length; ++i) {
        a[i] = a[i - 1] + a[i - 2];
    }
}

int main() {
    unsigned long long s[100] = {0, 1};
    int n = 100;

    fibonacci(s, n);

    xuatmang(s, n);

    return 0;
}
HK boy viết 16:50 ngày 01/10/2018

Thôi dùng mảng hằng đi em.

fibo[101] = {'0', '1', ...};
Trần Hoàn viết 16:50 ngày 01/10/2018

Các kiểu dữ liệu mặc định đều bị giới hạn về kích thước.
Nếu muốn xây dựng một kiểu dữ liệu to bao nhiêu cũng được, bạn tìm hiểu về “Big Integer” nhé.

Code về mặt thuật toán mình nghĩ là ok chuẩn không cần chỉnh. Đệ quy mới là cái thằng chậm.

Kiii viết 16:48 ngày 01/10/2018

Cám ơn 2 anh nhiều ạ.

Bài liên quan
0