C语言有一个数列满足an=an-1 2an-2,已知a1=1, a2=1,求a15的值和a20的值。.
#include<stdio.h>
int main()
{ int i,j,f[21]={0,1,1};
for(i=3; i<21; i++)
f[i]=f[i-1]+2*f[i-2];
printf("f[%d]=%d\nf[%d]=%d\n",15,f[15],20,f[20]);
return 0;
}
格里编程办公技巧 同学 提供了递归思路,以下示例仅提供另一种思路。
#include <stdio.h>
int f(int n) {
int i, a = 1, b = 1;
if(i < 3) return 1;
for(i = 2; i < n; ++i) {
int t = a + 2 * b;
a = b;
b = t;
}
return b;
}
int main()
{
printf("a15= %d\na20= %d\n", f(15), f(20));
return 0;
}