f(0)=f(1)=1,f(2)=0,f(n)=f(n-1)-2*f(n-2)+f(n-3),n>2。输出所有的f(n)的值,并求f(0),f(1),……,f(50)中的最大值
如何用C语言表示出来?
#include <stdio.h>
int main()
{
int a[51], i;
a[0] = 1;
a[1] = 1;
a[2] = 0;
for (i = 3; i < 51; i++)
{
a[i] = a[i - 1] - 2 * a[i - 2] + a[i - 3];
}
int max = 0;
for (i = 0; i < 51; i++)
{
if (a[i] > max)
{
max = a[i];
}
printf("%d ", a[i]);
}
printf("\n最大值是: %d", max);
return 0;
}
首先初始化f(0)=f(1)=1,f(2)=0,并将f(0)赋值给max,作为最大值,方便后续比较,接着再用一个for循环i从3开始通过f(i)=f(i-1)-2*f(i-2)+f(i-3)的计算,输出所有f(i)的值,并将这些值存入一个数组中,循环条件i<=50,输出所有的f(i)值,然后再来一个for循环i从0到50,for循环遍历数组,在一个if语句让所有的数据都跟f(0)比较,如果比f(0)大就将值赋给max。然后在循环外输出最大值就可以了。
简要来说:for(int i = 3;i <=50 ;i++) for(int i = 0; i <= 50;i++)两个循环就可以了,一个计算并输出,一个进行查找比较,最后在循环外输出最大值。
望采纳!!