Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Bàn về giải thuật kiểm tra một số có phải là số Fibonaci hay không

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    11

    Mặc định Bàn về giải thuật kiểm tra một số có phải là số Fibonaci hay không

    Như các bạn đều biết thì số Fibonaci là một số có tính truy hồi ngặt, nghĩa là phải biết F(0) thì mới tính được F(n). Mình có viết một hàm Kiểm tra xem một số n có phải là số Fibonacci ko như sau:

    Trước hết viết một hàm tính số Fibonaci thứ i fibo(i), (cái này dùng đệ quy) ai cũng biết.

    Sau đó viết hàm kiemtra

    Code:
    kq=1;
    do
    {
              i++;
    }while (fibo(i)<n)
    
    if (fibo(i)==n)
         return 1;
    else
         return 0;
    Như vậy nếu fibo(i) = n thì n sẽ là số fibo thứ i.

    Có bạn nào còn thuật toán khác chạy nhanhn hơn ko, vì mình thấy càng trở về phía bên phải của trục số thì các số fibo sẽ phân bố càng thưa, như vậy nếu dùng cách trên sẽ chạy hơi lâu.
    Đã được chỉnh sửa lần cuối bởi comeonbaby : 02-03-2008 lúc 06:19 PM. Lý do: đưa code vào thẻ code

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi luckyluke Xem bài viết
    Code:
    kq=1;
    do
    {
              i++;
    }while (fibo(i)<n)
    
    if (fibo(i)==n)
         return 1;
    else
         return 0;
    Như vậy nếu fibo(i) = n thì n sẽ là số fibo thứ i.
    Trước tôi làm các phép toán với số fibo tôi cũng dùng đệ quy.
    Nhưng hình như bài này có thể làm bằng Quy Hoạch Động ( Cái này tôi chưa có nghiên cứu).
    Tuy nhiên đoạn code trên của bạn tôi chưa hiểu "kái" kq=1; là gì rứa.
    Với lại :
    if (fibo(i)==n)
    nó sẽ gọi lại một lần nữa fibo(i). Bạn nghĩ xem nó sẽ như thế nào với cái phía trên bạn đã gọi một lần rồi?
    Bạn có thể để một biến Tmp=fibo(i); ở trên, khi đó chỉ cần
    if(Tmp == n) return 1;//true
    return false;//cái này khỏi phải else làm gì nữa
    Đó chỉ là cái tôi thấy không hợp lý trong đoạn code của bạn.
    Bạn có thể post bài hoàn chỉnh của bạn lên mọi người sẽ đưa ra ý kiến.
    Như vậy sẽ rõ ràng hơn là post một đoạn mập mờ như trên.
    Thân.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Tìm sách giải thuật của Lê Minh Hoàng mà đọc, giải Fina thì dùng QHD là ok nhất rùi. Công thức truy hồi cho bài này cũng rất đơn giản, có thể nói là cơ bản nhất của QHD.

Các đề tài tương tự

  1. Trả lời: 2
    Bài viết cuối: 10-04-2013, 10:50 AM
  2. Kiểm tra có phải là số fibonaci trong lập trình C?
    Gửi bởi thienvu2704 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 24-11-2012, 05:05 PM
  3. Tạo 1 mảng có n phần tử là cac 1 số liên tiếp trong dãy Fibonaci.
    Gửi bởi quoccuong1991cltg trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 28-05-2010, 06:19 AM
  4. Tìm tất cả các phần tử là số nguyên tố <n (nhập từ bàn phím) nằm trong dãy Fibonaci
    Gửi bởi bachkhoa9x trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 28-07-2009, 10:44 AM
  5. Gải thuật tính F(n) - Dãy Fibonaci bội 3
    Gửi bởi developer trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 06-01-2009, 10:09 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn