階乗計算
30分プログラム、その761。
特にやることも思いつかないので、階乗を計算してみました。一応、末尾再帰にしてみました。
使い方
$ perl fact.pl 1 2 3 5 8 13 21 34 55 89 144
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- use strict; use warnings; use Data::Dumper; sub facti($$$){ my ($n, $prev, $current) = @_; if($n == 0) { $current; }else{ @_ = ($n - 1, $current, $prev + $current); goto &facti; } } sub fact($){ my ($n) = @_; facti $n, 1, 1; } for(0..10){ print fact($_),"\n"; }