use Math::BigInt; 计算 斐波那契数列(Fibonacci sequence),不受长整型位数限制。
编写 fibonacci.pl 如下
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Math::BigInt;
- sub bigint { Math::BigInt->new(shift); }
-
- # 定义一个子程序来计算Fibonacci数列的第n个数字
- sub fibonacci {
- my ($n) = @_;
- my $x = bigint(0);
- my $y = bigint(1);
- while($n >0){
- ($x, $y) = ($y, $x+$y);
- $n--;
- }
- return $x
- }
-
- # 获取用户输入
- print "请输入一个正整数: ";
- chomp(my $n =
); -
- # 检查输入是否为正整数
- if ($n !~ /^\d+$/) {
- print "错误:输入必须是正整数。\n";
- exit 1;
- }
-
- # 计算并输出Fibonacci数列的第n个数字
- my $number = fibonacci(int($n));
- print "fibonacci($n)= $number\n";
- #print "Fibonacci数列的第$n个数字是: $number\n";
运行 perl fibonacci.pl
请输入一个正整数: 365
fibonacci(365)= 8531073606282249384383143963212896619394786170594625964346924608389878465365
用 python 校验,以上结果正确:
python fibonacci.py 365
fib1(365)= 8531073606282249384383143963212896619394786170594625964346924608389878465365