上海至尼泊尔机票:搞不懂这个题啊!!!!

来源:百度文库 编辑:高考问答 时间:2024/05/01 06:05:30
main()
{
long a0=0,a1=1,a2=1,a3,n;
printf("a0=%lda1=%lda2=%ld\n",a0,a1,a2);
a3=a0+2*a1+a2;
for(n=4;n<=20;n++)
{
a0=a1;
a1=a2;
a2=a3;
a3=a0+2*a1+a2;
printf("a%ld=%ld\n",n,a3);
}
getch();
}
这里的a4是怎么把值赋给a3的??公式里没有啊,还有就是循环里面的语句是怎么执行的??

最后的数列是0,1,1,3,6,13……
输出是a0=0a1=1a2=1a4=3a5=6a6=13……
可见没有输出a3,原因出在这里printf("a%ld=%ld\n",n,a3);应该写成
printf("a%ld=%ld\n",n-1,a3);数列就一一对应了。并不是吧a3的值赋给了a4,而是输出出现了错误。
循环里实现的是a[n]=a[n-3]+2*a[n-2]+a[n-1] 的功能。