题意及思路
- 题意:递归调用,套用公式即可。
- 原有思路:直接贴个代码吧,简单明了。
private static long solve(int n) {
if(n<=1) return n;
return solve(n-1)+solve(n-2);
}
- 改进点:
- 踩坑点:大概到四十六之后的数列值将会超出int数值范围。所以要用一个较大范围的基本数据类型,我这里使用的是long。
代码
import java.util.Scanner;
public class Main{
private static long ans[] = new long[55];
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n;
long ans;
while(in.hasNext()){
n = in.nextInt();
if(n==-1) break;
ans = solve(n);
System.out.println(ans);
}
in.close();
}
private static long solve(int n) {
if(n<=1) return n;
if(ans[n]!=0) return ans[n];
return ans[n] = solve(n-1)+solve(n-2);
}
} 
京公网安备 11010502036488号