C程序找到给定递推关系的第n项

假设我们有三个数字 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

示例

让我们看看以下实现以获得更好的理解 -

#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

以上是 C程序找到给定递推关系的第n项 的全部内容, 来源链接: utcz.com/z/335431.html

回到顶部