- 555 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 15:08:29.22 ID:thhERN1M.net]
- >>526 Perl5 その1:単純にloop
for $i (0,1,2,3,4,5,10,100,1000,10000,1000000) { ($s, $n) = ($i, 0); while ($s) { $s = int $s / 5; $n += $s; } print "$i $n\n"; } >>526 Perl5 その2: lambdaのtail recursion use feature current_sub; for $i (0,1,2,3,4,5,10,100,1000,10000,1000000) { $n = sub {my $j = shift; $j ? do {my $s = int $j / 5; $s + __SUB__->($s)} : 0; }->($i); print "$i $n\n"; } いずれも実行結果は $ perl 12_522.pl 0 0 1 0 2 0 3 0 4 0 5 1 10 2 100 24 1000 249 10000 2499 1000000 249998 = i/5のreductionよりもエレガントな解法をしばらく考えていたけど一旦断念して投稿します
|

|