Java数组预处理实现费切那波数列

下面我们展示一段Java实现费切那波数列的代码。有两个特点,它将已经运算过的数存在数组中,从而避免了重复运算;还有采用的big integer来存储,可存储的数据更大。
import java.math.BigInteger;
import java.util.Scanner;

public class Experiment1
{
static BigInteger f[] = new BigInteger[200];

public static void main(String[]args)
{
    f[0]=new BigInteger("1");  
    f[1]=new BigInteger("2");
    for(int i=2;i<f.length;i++)
    {
        f[i]=new BigInteger("0");
    }
    Scanner scan=new Scanner(System.in);
    while(scan.hasNext())
    {
        int n=scan.nextInt();
        printFibonacciArray( n-1);
        System.out.println(f[n-1]);

    }
}
public static BigInteger printFibonacciArray(int n)
{//the first number, the second number,the totel fibonacci numbers   
     if(n==0)
     {
        return f[0];
     }
     else if(n==1)
         return f[1];
     else
     {
         if(f[n].compareTo(new BigInteger("0"))!=0)
             return f[n];
         else
         {
             f[n]=printFibonacciArray(n-1).add(printFibonacciArray(n-2));
             return f[n];
         }
     }



}   

}

### 使用多线程实现斐波那契数列的打印输出 为了实现多线程环境下的斐波那契数列计算与打印,可以采用 Python 的 `threading` 库来管理多个线程。下面展示了一个具体的例子,在这个实例里,程序会接收一系列请求去获取不同位置上的斐波那契数值,并利用独立的工作线程处理每一个请求。 #### 定义斐波那契函数 首先定义一个用于返回指定索引处斐波那契数值的方法: ```python def fibonacci(n): if n <= 0: return "Input should be positive integer" elif n == 1 or n == 2: return 1 else: a, b = 1, 1 for _ in range(3, n + 1): a, b = b, a + b return b ``` 此方法采用了迭代方式而非简单的递归来提高效率[^4]。 #### 创建工作线程类 接着构建一个继承自 `Thread` 类的新类,该类负责执行实际的任务——即调用上述定义好的 `fibonacci()` 函数完成特定编号的斐波那契数计算并打印出来: ```python import threading class FibonacciWorker(threading.Thread): def __init__(self, num): super().__init__() self.num = num def run(self): result = fibonacci(self.num) print(f"Fib({self.num})={result}") ``` 这里重写了父类中的 `run()` 方法以便在线程启动(`start()`)之后自动触发相应的逻辑操作[^5]。 #### 主程序入口 最后编写一段脚本来收集用户的输入作为待查询的位置列表,然后针对每个元素创建对应的 `FibonacciWorker` 实例对象并立即开启它们;由于这些线程都是守护状态(demon),所以一旦所有非守护进程结束运行,则整个应用程序也会随之终止: ```python if __name__ == "__main__": nums = list(map(int, input().split())) threads = [] for i in nums: worker = FibonacciWorker(i) worker.start() threads.append(worker) for t in threads: t.join() print("All tasks completed.") ``` 这段代码实现了并发地向用户提供所需的结果,而不需要依次等待各个任务逐一完成后再继续下一步的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值