本文主要是介绍groovy:java.math.BigInteger 计算 斐波那契数列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
import java.math.BigInteger; 计算 斐波那契数列(Fibonacci sequence)。
编写 fibon.groovy 如下
// 使用 groovy的 Memoize注解实现函数的记忆化
import java.math.BigInteger;
import groovy.transform.Memoized@Memoized
def fib(n) {if (n < 2) return n;return fib(n-1) + fib(n-2)
}def n = new BigInteger("200");
println "fib(${n})= " +fib(n);
运行 groovy fibon
fib(200)= 280571172992510140037611932413038677189525
如果改为 fib(300) 就会报错:溢出
计算 斐波那契数列(Fibonacci sequence),不受长整型位数限制。
编写 fibonacci.groovy 如下
import java.math.BigInteger;public class Fibonacci {// 使用迭代的方法来计算Fibonacci数列public static BigInteger fib(int n) {if (n <=0) return BigInteger("0");def a = new BigInteger("0");def b = new BigInteger("1");def c = new BigInteger("0");while(n >0) {c = a.add(b);a = b;b = c;n--;}return a;}public static void main( args) {if (args.size()==1){try {def n = Integer.parseInt(args[0]);if (n >0) println "fib(${n})= " +fib(n);} catch (NumberFormatException ex){ex.printStackTrace();} } else {println " usage: groovy fibon n ";}}
}
运行 groovy fibonacci 365
fib(365)= 8531073606282249384383143963212896619394786170594625964346924608389878465365
用 python 校验,以上结果正确:
python fibonacci.py 365
fib1(365)= 8531073606282249384383143963212896619394786170594625964346924608389878465365
这篇关于groovy:java.math.BigInteger 计算 斐波那契数列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!