每日一练——Java求某数列区间最大值
题目:已知f(0)=f(1)=1;
f(2)=0;
f(n)=f(n-1)-2*f(n-2)+f(n-3)。
求f(0)~f(50)中的最大值。
实现源码:
package wanwan;
/**
* Function:已知f(0)=f(1)=1;f(2)=0;f(n)=f(n-1)-2*f(n-2)+f(n-3)
* 求f(0)~f(50)中的最大值
* Created by Y.W. on 2018-04-25 22:47.
*/
public class E {
public static void main(String[] args) {
int[] arr = new int[51]; // 注意初始化数组
arr[0] = 1;
arr[1] = 1;
arr[2] = 0;
int max = 1;
int n = 0;
for (int i = 3; i < arr.length; i++) {
arr[i]=arr[i-1]-2*arr[i-2]+arr[i-3];
if (max < arr[i]){
max = arr[i];
n = i;
}
}
System.out.println("f(0)~f(50)中的最大值为:f("+n+")");
}
}
结果:
思考
被题目的表象迷惑了很久才想清楚这是个数列,之前是我想复杂了。