#!/usr/bin/perl # 使用遞迴方法 (recursive) # 輸入 : 正整數 n # 輸出 : 階乘 n! sub factorial { my $n = shift; return 'NaN' if ($n1) { $fact *= $n; $n = $n - 1; } return $fact; }
上面程式以自家電腦執行發現
18! 之後以科學記號顯示
171! 之後溢位無法計算
# 使用遞迴方法 (recursive) # 輸入 : 正整數 n # 輸出 : 雙階乘 n!! sub double_factorial { my $n = shift; return 'NaN' if ($n1) { $fact *= $n; $n = $n - 2; } return $fact; }
上面程式以自家電腦執行發現
28!! 之後以科學記號顯示
301!! 之後溢位無法計算
# 使用大數模組 (package) # 輸入 : 正整數 n # 輸出 : 階乘 n! use Math::BigInt; sub factorial_p { my $n = shift; $fact = Math::BigInt->new($n); return $fact->bfac(); } # 使用大數模組 (package) # 輸入 : 正整數 n # 輸出 : 雙階乘 n!! sub double_factorial_p { my $n = shift; my $fact = Math::BigInt->new(1); return 'NaN' if ($n1) { $fact = $fact->bmul($n); $n = $n - 2; } return $fact; }
全站熱搜
留言列表