# カタラン数 Catalan Number # 引数 整数 ($n) # 戻り値 カタラン数 ($CatalanNumber) sub CATALANNUMBER{ my ($n) = @_; my $CatalanNumber = 0; my @Catalan = (0); my $Combination = 0; my $BinomialCoefficient = 0; my $N = int($n); # 整数の確認 if($N < 1){ return 0; } # 計算 for(my $i = 0; $i <= 1; $i++){ $Combination = $N * 2; $BinomialCoefficient = 1; for(my $j = 1; $j <= ($N - $i); $j++){ # 二項係数 Binomial Coefficient $Combination = $Combination / $j; $BinomialCoefficient = $Combination; $Combination = $Combination * (($N * 2) - $j); } $Catalan[$i] = $BinomialCoefficient; } # カタラン数 Catalan Number $CatalanNumber = $Catalan[0] - $Catalan[1]; return $CatalanNumber; }