Closed. This question needs details or clarity 。它目前不接受答案。












想改善这个问题吗?添加细节并通过 editing this post 澄清问题。

去年关闭。



Improve this question




我被要求确定可以在我的系统上显示的最大斐波那契数,我想知道如何做到这一点。

这是我确定第 n 个斐波那契数的简单应用程序
import java.util.Scanner;

public class FibonacciTest
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.printf("please enter the nth fibonacci number: ");

        int n = input.nextInt();
        System.out.printf("%d\n", fibonacci(n));

    }// end main

    public static int fibonacci(int n)
    {
        // determines nth fibonacci number
        int fib = 1;
        int temp = 0;

        if (n == 1)
            return 0;

        else
        {
            for (int i = 2; i < n; i++)
            {
                int last = fib;
                fib += temp;
                temp = last;
            }
            return fib;
        }

    }// end fibonacci
}

最佳答案



为此,您需要使用 BigInteger

运行此程序,直到您的应用程序因资源不足而停止。

public static void main(String... args) {
    BigInteger a = BigInteger.ONE;
    BigInteger b = BigInteger.ONE;
    String last = null;
    try {
        for (long count = 1; ; count++) {
            BigInteger c = a.add(b);
            last = c.toString();
            a = b;
            b = c;
            if (count % 10000 == 0)
                System.out.println("... " + count);
        }
    } catch (Throwable e) {
        System.out.println("The largest value which was calculated was");
        System.out.println(last);
    }
}

我会先尝试使用少量内存,例如-mx16m
更新:即使有 16 MB 的限制,它也计算了 13K 项并且仍在运行。

关于java - 如何确定最大的斐波那契数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13492807/

10-10 08:57