Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

주어진 반복 관계의 n 번째 항을 찾는 C 프로그램

<시간/>

세 개의 숫자 a, b, c와 값 n이 있다고 가정합니다. 우리는 반복 공식 S(n) −

를 따릅니다.
  • S(1)은
  • 를 반환합니다.
  • S(2)는 b를 반환합니다.
  • S(3)은 c를 반환합니다.
  • S(n)은 모든 n> 3에 대해 S(n-1) + S(n-2) + S(n-3)를 반환합니다.

이 반복을 따라 n항을 찾아야 합니다.

따라서 입력이 a =5, b =2, c =3, n =6과 같으면 출력은 −

이기 때문에 28이 됩니다.
  • 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
  • 이제 S(5) =10 + 3 + 2 =15
  • 및 S(6) =15 + 10 + 3 =28

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

solve() 함수를 정의하면, b, c, n,

  • n이 1과 같으면 다음과 같습니다.
    • 반환
  • n이 2와 같으면 다음과 같습니다.
    • 반환 b
  • n이 3과 같으면 다음과 같습니다.
    • 반환 c
  • return solve((a, b, c, n - 1) + solve(a, b, c, n - 2) + solve(a, b, c, n - 3))

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#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);
}

입력

5, 2, 3, 6

출력

28