perl - 用于 pi 计算的 Perl 代码

标签 perl

有人可以用 Perl 逐步解释这段代码吗:

$.=.5;
$\=2/$.++-$\for$...1e6;
print

最佳答案

添加空格:

$. = .5;
$\ = (2 / $.++) - $\ for $. .. 1e6;

用更合理的 var 名称替换:

$x = .5;
$pi = (2 / $x++) - $pi for $x .. 1e6;

不要将同一个变量用于两个目的:

$x = .5;
$pi = (2 / $x++) - $pi for 0 .. 1e6;

转换为公式:

pi = 2/1000000.5 - ( ... - (2/2.5 - (2/1.5 - (2/0.5))))

   = 2/1000000.5 - ... + 2/2.5 - 2/1.5 + 2/0.5

   = 4/2000001 - ... + 4/5 - 4/3 + 4/1

   = 4/1 - 4/3 + 4/5 - ... + 4/2000001

这是listed在维基百科中作为 Gregory-Leibniz 系列。

print;print($_);,打印 $_(未使用,所以 undef,字符串化为空字符串)后跟$\(通常是一个空字符串,但在原始代码中用作累加器)。

关于perl - 用于 pi 计算的 Perl 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667543/

相关文章:

perl - 架构Linux Perl。 (数据转储程序) undefined symbol Perl_xs_apiversion_bootcheck

mysql - 使用 Perl 和 PostgreSQL 保存复选框选项

database - Perl - SQLite3 数据库加密

regex - 如何从终端中的文件运行 perl 正则表达式列表

perl - 面向对象的 Perl 中的包、模块和类有什么区别?

perl - 修复此警告的正确方法是什么?

multithreading - 在Perl中实现看门狗

Python 等效于管道 zcat 结果到 Perl 中的文件句柄

php - 用于文件上传的 PHP 的 $_FILES 的 Perl 等价物是什么?

perl - $SIG{INT} ='IGNORE' 无法与 Net::OpenSSH 一起使用