我正在编写一个代码,用来计算序列:

           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)代替nn-2

关于c - 处理斐波那契/序列码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21591824/

10-13 05:05