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