答案:7913837
以前经典的斐波那契函数是
初始数据 是 1 1
然后新的数等于前两个数相加
于是数列为 1 1 2 3 5 8......
本题的意思是 先给你一个数让你初始化数列数据
比如 197
初始化数据是 1 9 7
然后新的数等于前n个数相加(n为S的位数比如197n就为3)
于是数列为 1 9 7 17(1+9+7) 33(9+7+17) 57(7+17+33) 107(17+33+57)197(33+57+107)...
所以我们算法思路也是先根据数入的数S给数列初始化然后再和加上前n个数
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i=10000000;i>=1;i--){
String s =""+ i;
for (int j=0;j<s.length();j++){//初始化数列
list.add(s.charAt(j)-'0');
}
int len = s.length();
boolean ist = false;
while (list.get(list.size()-1)<i){
int sum=0;
for (int j=list.size()-1;j>=list.size()-len;j--){//求前n位数相加
sum+=list.get(j);
}
list.add(sum);
if (sum==i){//如果得到的值等于S输出结果
System.out.println(sum);
ist = true;
break;
}
}
if (ist){
break;
}
}
}
}