我正在编写一个代码,用来计算序列:
a(n+2)=-2(n+1)+3a(n) a(0)=2 a(1)= -1
不幸的是我搞不懂。我最近刚开始做这个(大约一个月),我会尽量自己做,但我需要一些帮助。谢谢你决定帮助我。
#include <stdio.h>
int mysequence(int n)
{
if (n==0) return 2;
if (n==1) return -1;
if (n==2) return 8;
return (2 * mysequence(n+1) + mysequence(n+2))/3;
}
int main()
{
int n;
printf("Enter n = ");
scanf("%d", &n);
printf("%d\n",mysequence(n));
return 0;
}
最佳答案
仔细看这一行,并将其与您对序列的了解进行比较:return (2 * mysequence(n+1) + mysequence(n+2))/3
。
他们没有共同点。
你想要的是a(n+2)=-2(n+1)+3a(n)
。
至于为什么,系数应该足够清楚,它们只是从定义中复制出来的。我们用return (-2*mysequence(n-1) + 3*mysequence(n-2))
和n-1
调用下一级递归的原因也很简单,请注意:
用n-2
>a(n+2)=-2(n+1)+3a(n)
代替n
n-2
。
关于c - 处理斐波那契/序列码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21591824/