解决策略1:利用空间弥补时间
利用数组记录已算Fibonacci数列项
解决策略2:递推
import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { long n = sc.nextLong(); int i = 2, sum = 2; int x = 0, y = 1, z = 1; if (n == 1 || n == 2) System.out.println(1 + " " + 1); while (n >= sum && n > 2) { i++; x = y; y = z; z = x + y; sum = sum + z; } if (n>2){ if (n - sum + z > y) System.out.print(i + " " + (n - sum + z)); else System.out.print((i - 1) + " " + y); } } } } 比起递归,时间复杂度明显减小,但OJ还是时间超限