每日一练11——Java求某数列区间最大值

每日一练——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+")");
    }
}

结果:


运行结果

思考

被题目的表象迷惑了很久才想清楚这是个数列,之前是我想复杂了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容