java - 将函数从返回 long 更改为 BigInteger

标签 java biginteger

我正在开发一个查找斐波那契数列的程序。作业的第一个版本要求返回长数据类型,现在我们必须更改函数以返回 BigInteger。我不知道如何更改我的函数以发回 BigInteger 类型。这是我所拥有的:

public static BigInteger fibonacci_Loop(int f) {
    BigInteger previous, current;

    for(int i = 0; i < f; i ++) {
        BigInteger sum = previous.add(current);
        previous = current;
        current = sum;
    }
    return previous;
}

它不会运行,因为它希望我初始化前一个和当前的值,并且任何时候我这样做都不会返回正确的数字。我不完全确定如何使用 BigInteger,任何建议将不胜感激。

最佳答案

下面的代码对我有用。将 previous 初始化为零,将 current 初始化为 1,并以同样的方式运行循环。请注意,循环的运行速度比所需的斐波那契指数小一。

public static BigInteger fibonacci_Loop(int f) {
BigInteger previous = BigInteger.ZERO;
BigInteger current = BigInteger.ONE;

for(int i = 0; i < f-1; i ++) {
    BigInteger sum = previous.add(current);
    previous = current;
    current = sum;
}
return previous;

}

关于java - 将函数从返回 long 更改为 BigInteger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52250668/

相关文章:

java - 如何将字符串转换为 BigInteger?

java - 存储和检索 ParseUsers 列表

java - 使用模拟和不使用模拟进行测试,测试时间

c++ - 优化c++代码以添加两个作为字符串的数字

c++ - C++ 中 BigInt 类的良好和基本实现

c# - 十六进制到 int C# 非常大的数字

c# - BigInteger 如何在内部存储值?

java - 为什么主线程在继续之前等待另一个线程完成?

java - Struts 1.3.10 Digester.getParser() UnsupportedOperationException

java - Slick2D 游戏启动然后立即关闭