请教一个算法:计算N项的Fibonacci数列的和,其中第N项是数列中最大的不超过4百万的数 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.util.*;public class Fibonacci { static ArrayList<Integer> list = new ArrayList<Integer> (); static int nNum; public static int findN(int n){ if(n <= 0){ System.err.println("Error!"); return -1; } else if(n == 1) nNum = 0; else if(n == 2) nNum = 1; else nNum = findN(n-1) + findN(n-2); return nNum; } public static void main(String args[]){ int sum = 0; for (int i=1; i<40; i++){ if (findN(i) < 4000000){ sum += findN(i); } } System.out.println(nNum); System.out.println("\n"+ sum); }}390881699227464至于为什么循环到40 还是手算的 根据第n项的表达式求出来的 代码里的那个ArrayList没用 开始我还想直接循环递归 太慢了 我现在还没想出怎么确定哪一项是大于4000000的 jar 文件的问题 一个计时器的小程序,请教 紧急求救: 如何实现窗口中的组件大小随其窗口大小的改变而改变? C#中的特性 请教反射问题,如何得到类中的数组,先谢谢大家了。 急!!-不明白什么意思,请高手指点,在线等!! Thinking in Java 是第二版好,还是第三版好 初学问题2 请问c/s与b/s型式的有什么区别? 用什么工具开发corba好? 请教一个String数组排序的问题? 字符串按规则截取
static ArrayList<Integer> list = new ArrayList<Integer> ();
static int nNum;
public static int findN(int n){
if(n <= 0){
System.err.println("Error!");
return -1;
}
else if(n == 1)
nNum = 0;
else if(n == 2)
nNum = 1;
else
nNum = findN(n-1) + findN(n-2);
return nNum;
}
public static void main(String args[]){
int sum = 0; for (int i=1; i<40; i++){
if (findN(i) < 4000000){
sum += findN(i);
}
}
System.out.println(nNum);
System.out.println("\n"+ sum);
}
}
390881699227464
至于为什么循环到40 还是手算的 根据第n项的表达式求出来的