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

Đề tài: Ciải bài a[n]=a[n-1]+a[n-2]+a[n-3] bằng lập trình C

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

    Mặc định Ciải bài a[n]=a[n-1]+a[n-2]+a[n-3] bằng lập trình C

    Em chỉ mới học C được một tuần , thầy giáo dạy lý thuyết về If, While ,For xong và ra ngay đề toán này :

    Cho dãy a[n] sau:
    a[1] = a [2] = a[3] = 1
    a[n] = a[n-1] + a[n-2] + a[n-3]

    Viết chương trình tìm 30 số đầu tiên của dãy.


    Các anh có thể giúp em giải bài này, chỉ dùng những kiến thức sơ cấp như trên được không ạ?
    Dãy này tương tự như Fibonacci, em đã search và đọc các bài viết trong diễn đàn, nhưng sử dụng các hàm em chưa học nên chưa dùng được.

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

    Cực kì sơ cấp luôn nè ~~:
    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5.   int n;
    6.   cout << "Ban can in ra so fibonaci thu may :";
    7.   cin >> n;
    8.  
    9.   int a = 1;
    10.   int b = 1;
    11.   int c;
    12.  
    13.   for (int i = 3; i <= n; i++)
    14.   {
    15.           c = a + b;
    16.           a = b;
    17.           b = c;
    18.   }
    19.  
    20.   cout << "So fibonaci thu " << n << " la :" << c;
    21.   return 0;
    22. }

  3. #3
    Ngày gia nhập
    12 2006
    Bài viết
    43

    Bài rox_rook đúng thật là fibonaci luôn rồi, bài của chủ topic khác fibo chút, ngoài ra là in ra 30 số đầu tiên mà !!!

    Bài bathong như sau :

    C Code:
    1. #include <stdio.h>
    2.  
    3. #define max 30
    4. main()
    5. {
    6.     float a[max]; //chắc kiểu int ko đủ đâu
    7.     int i;
    8.     int j;
    9.     for (i = 0; i < max; ++i)
    10.     {
    11.         if (i < 3)
    12.             a[i] = 1;
    13.         else
    14.         {
    15.             a[i] = a[i-1] + a[i-2] + a[i-3];
    16.         }
    17.     }
    18.  
    19.     printf("\nIn day so ra man hinh\n");
    20.     for (j = 0; j < max; ++j)
    21.     {
    22.         printf("%0.0f ", a[j]);
    23.     }
    24.     getch();
    25.     return 0;
    26. }
    Ai thử lại giùm nha !!!
    ---------------
    chú ý Để source vào tag [CODE].Alviss
    Đã được chỉnh sửa lần cuối bởi Alviss : 30-10-2007 lúc 08:30 AM.

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Có thể dùng thêm cách đệ qui nữa cho đủ bộ (Bài này đặc trưng của Qui Hoạch Động đây)

    unsigned int fibo(int a[],int i)
    {
    if(i==0 || i==1 || i==2)
    return 1;
    else
    return fibo(a,i-1) +fibo(a,i-2)+ fibo(a,i-3);
    }

    Không biết kiểu unsigned int chịu nổi ko nhỉ nhưng mà 30 số đầu thì chắc không quá lo.

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