有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用1个变量的java Fibonacci

在一次采访中,我被问到以下问题:

Is there any way in which Fibonacci series can be generated using only 1 variable ?

我不知道该怎么回答。我该怎么说


共 (3) 个答案

  1. # 1 楼答案

    是的,您可以使用closed-form expression

    在哪里

    可以使用double计算表达式,并将结果四舍五入到最接近的整数。由于浮点运算的有限精度,对于足够大的n,这个公式会给出错误的答案,但我认为它适用于结果适合Java 32位整数的情况

  2. # 2 楼答案

    当然,使用递归:

    public class Test {
    
        public static int fib(int n) {
            return n < 2 ? n : fib(n-1) + fib(n-2);
        }
    
        public static void main(String[] args) {
            for(int i = 0; i <= 10; i++) {
                System.out.print(fib(i)+", ");
            }
            System.out.println("...");
        }
    }
    
    // 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
    
  3. # 3 楼答案

    在初始1 1之后,理论上可以通过以下方式从上一个值生成一个值(直到机器精度达到要求):

    f = Math.round(f * PHI)
    

    其中PHI是另一条注释中定义的常数:

    static final double PHI = (1 + Math.sqrt(5))/2;