Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình C để tìm số hạng thứ n của quan hệ lặp lại đã cho

Giả sử chúng ta có ba số a, b, c và một giá trị n. Chúng tôi tuân theo công thức lặp lại S (n) -

  • S (1) trả về một
  • S (2) trả về b
  • S (3) trả về c
  • S (n) trả về S (n-1) + S (n-2) + S (n-3) với mọi n> 3.

Chúng ta sẽ phải tìm ra số hạng thứ n bằng cách theo dõi sự lặp lại này.

Vì vậy, nếu đầu vào là a =5, b =2, c =3, n =6, thì đầu ra sẽ là 28 vì -

  • S (6) =S (5) + S (4) + S (3)
  • S (5) =S (4) + S (3) + S (2)
  • S (4) =S (3) + S (2) + S (1) =3 + 2 + 5 =10
  • vậy bây giờ S (5) =10 + 3 + 2 =15
  • và S (6) =15 + 10 + 3 =28

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

Xác định một hàm giải quyết (), điều này sẽ nhận a, b, c, n,

  • nếu n giống 1, thì:
    • trả về một
  • nếu n giống 2, thì:
    • trả lại b
  • nếu n giống 3, thì:
    • trả lại c
  • trả về giải quyết ((a, b, c, n - 1) + giải quyết (a, b, c, n - 2) + giải quyết (a, b, c, n - 3))

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <stdio.h>
int solve(int a, int b, int c, int n){
    if(n == 1)
        return a;
    if(n == 2)
        return b;
    if(n == 3)
        return c;
    return solve(a, b, c, n-1) + solve(a, b, c, n-2) + solve(a, b, c, n-3);
}
int main(){
    int a = 5, b = 2, c = 3, n = 6;
    int res = solve(a, b, c, n);
    printf("%d", res);
}

Đầu vào

5, 2, 3, 6

Đầu ra

28