如何简化这段东西

2013-12-13 01:02:47 +08:00
 kennedy32
尝试了一下阶乘表如下:
<?php

function jiecheng($i){
if($i==1){
return $i;
}else{
return $i*jiecheng($i-1);
}
}
function jiecheng2($i){
if($i==1){
return $i;
}else{
$j=jiecheng2($i-1);
return "$i*$j";
}
}

for($i=1;$i<=10;$i++){
echo jiecheng2($i)."=".jiecheng($i)."<br/>";
}

?>

觉得两个功能可以合并,但是总是出错,得不到目前的结果如下:
1=1
2*1=2
3*2*1=6
4*3*2*1=24
5*4*3*2*1=120
6*5*4*3*2*1=720
7*6*5*4*3*2*1=5040
8*7*6*5*4*3*2*1=40320
9*8*7*6*5*4*3*2*1=362880
10*9*8*7*6*5*4*3*2*1=3628800

求前辈指导合并,或者简化。
4885 次点击
所在节点    PHP
55 条回复
zhujinliang
2013-12-13 14:35:34 +08:00
没人想到用神器eval么。。。
不过看起来比楼上某些同学的更长。。。

while($i++ < 10)
{
$s=$i.$p.$s;
$p='*';
echo "$s=".eval("return $s;").'<br/>';
}

顺便测试了php对未定义变量的容忍程度,居然未初始化的int与string都可以通过并按预想地执行。
zhujinliang
2013-12-13 15:22:04 +08:00
次奥,玩上瘾了。。。
目前是不是我的最短~~(°∀°)ノ

<?php for(;$s=++$i.$p.$s,$i<11;$p='*')eval("echo '$s='.($s).'<br>';");

除去<?php部分,长度是64字节
thbourlove
2013-12-13 15:24:41 +08:00
thbourlove
2013-12-13 15:29:06 +08:00
这么多人喜欢把php当perl用吗?
Ever
2013-12-13 15:44:26 +08:00
来个fp点的吧

<?php

function multiplication_table($max=10, $current=1, $cache_expr="", $cache_result=1, $row_sep="\n", $result=array()){
$expr = $current ===1 ? $current: "{$current} * {$cache_expr}";
$cache_result *= $current++;
$result[] = "$expr = {$cache_result}";
return $current<=$max? multiplication_table($max, $current, $expr, $cache_result, $row_sep, $result):join($row_sep, $result);
}

echo multiplication_table(10);
echo "\n";
msg7086
2013-12-13 15:47:29 +08:00
https://gist.github.com/msg7086/7941064

考虑到div宽度所以换行了。比gmp应该要慢一些,但是算是全内置函数实现了
thbourlove
2013-12-13 15:52:26 +08:00
@msg7086 快慢其实根本测不出。。不用gmp到20+就果断溢出了。。
msg7086
2013-12-13 15:56:11 +08:00
https://gist.github.com/msg7086/7941111
这个是带中间变量的版本,递增运算所以速度会很快

@thbourlove 溢出无解吧╮(╯_╰)╭
10iii
2013-12-13 17:04:17 +08:00
这样?
<script src="https://gist.github.com/10iii/7940276.js"></script>
10iii
2013-12-13 17:17:24 +08:00
10iii
2013-12-13 17:18:18 +08:00
Fedor
2013-12-13 17:22:06 +08:00
Fedor
2013-12-13 17:22:53 +08:00
@10iii

https://gist.github.com/thbourlove/7940940.js 不要后面的.js就可以了...
Geeker
2013-12-13 18:04:41 +08:00
刚学PHP,看了楼上的各种代码,整个人都不好了ORZ
infong
2013-12-13 21:10:05 +08:00
看完楼上们的回复,感觉整个都不知道php是什么了。
mikej
2013-12-13 21:58:32 +08:00
这帖子很v2ex
mantianyu
2013-12-13 23:51:06 +08:00
mantianyu
2013-12-13 23:51:34 +08:00
mantianyu
2013-12-13 23:54:17 +08:00
这下可以了吧
<script src="https://gist.github.com/cifer-lee/7946292"></script>
mantianyu
2013-12-13 23:56:32 +08:00
再来一次
<script src="https://gist.github.com/thbourlove/7940940.js"></script>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92952

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX