倒序求最优繁殖数列——繁殖数列:数列从第3项开始,每一项都等于前2项之和。给定任意数字(大于0),求长度最大的繁殖数列。
作者:互联网
倒序求最优繁殖数列——繁殖数列:数列从第3项开始,每一项都等于前2项之和。给定任意数字(大于0),求长度最大的繁殖数列。
···public class Test4 {
public static void main(String[] args) {
new Test4().fn(5);
}
private void fn(int maxNum) {
LinkedList<Integer> results = new LinkedList<Integer>();
int size = 0;
for (int i = 1; i < maxNum; i++) {
LinkedList<Integer> listTemp = new LinkedList<Integer>();
listTemp.addFirst(maxNum);
listTemp.addFirst(i);
LinkedList<Integer> resultTemp = getArray(listTemp);
//保存最大的长度的集合
if(resultTemp.size()>=size) {
results = resultTemp;
size = resultTemp.size();
}
}
int [] resultArr = new int [results.size()];
int index = 0;
for (int i : results) {
resultArr[index] = i;
index++;
}
System.out.println(Arrays.toString(resultArr));
}
private LinkedList<Integer> getArray(LinkedList<Integer> result) {
//用第三项减去第二项 大于零即可递归
int temp = result.get(1)-result.get(0);
if(temp>=0) {
result.addFirst(temp);
getArray(result);
}
return result;
}
}
标签:size,LinkedList,int,results,result,繁殖,倒序,数列 来源: https://blog.csdn.net/qshSuperman/article/details/98221217