+ -
当前位置:首页 → 问答吧 → 这段求阶乘代码能不能更短

这段求阶乘代码能不能更短

时间:2011-11-23

来源:互联网

今天写代码的时候突然写到写一个阶乘的问题。我记得刚学的时候写过当时代码有十几行具体怎么写的忘了,今天写了下代码如下
PHP code

function numRank($n){
    ($n==1)?$result = 1:$result = $n*numRank($n-1);
    return $result;
}



各位如果你们怎么写

作者: JustBeBetter   发布时间: 2011-11-23

试了下 这样也行
PHP code

function numRank($n){
    return ($n==1)?$result = 1:$result = $n*numRank($n-1);
}


作者: JustBeBetter   发布时间: 2011-11-23

那么也可以省略掉 $result =

作者: dream1206   发布时间: 2011-11-23


不错 PHP code


function numRank($n){
    return ($n==1)?1:$n*numRank($n-1);
}

作者: JustBeBetter   发布时间: 2011-11-23

你这两个其实是一样的。 再缩短:
PHP code

function numRank($n){
    return ($n==1)? 1 : $n*numRank($n-1);
}


作者: jordan102   发布时间: 2011-11-23

看样子 到头了
如果同样的代码量 有没有其他方式呢

作者: JustBeBetter   发布时间: 2011-11-23

搞短码呢这都?

作者: ohmygirl   发布时间: 2011-11-23

作者: JustBeBetter   发布时间: 2011-11-23

求阶乘无需用递归

function numRank($n){
  for($r=1;$n>1;$r*=$n--);
  return $r;
}

作者: xuzuning   发布时间: 2011-11-23

引用 8 楼 xuzuning 的回复:

求阶乘无需用递归

function numRank($n){
for($r=1;$n>1;$r*=$n--);
return $r;
}

++++++++++++++1
不错 很不错 学习啦

作者: JustBeBetter   发布时间: 2011-11-23

开启gmp模块的话,直接可以用gmp_fact,还支持大数。详情看手册。

作者: foolbirdflyfirst   发布时间: 2011-11-23

引用 8 楼 xuzuning 的回复:

求阶乘无需用递归

function numRank($n){
for($r=1;$n>1;$r*=$n--);
return $r;
}

厉害,没这么想过

作者: lusizeng   发布时间: 2011-11-23

这年头都在追求短了.

作者: PhpNewnew   发布时间: 2011-11-23

PHP code
function numRank($n){
    ($n==1)?$result = 1:$result = $n*numRank($n-1);
    return $result;
}

中 ($n==1)?$result = 1:$result = $n*numRank($n-1); 的写法是不规范的
应写作 $result = ($n==1)? 1:$n*numRank($n-1);
去除 $result 直接返回,就是PHP code
function numRank($n){
    return ($n==1)? 1 : $n*numRank($n-1);
}

进而
PHP code
function numRank($n){
   return $n==1 ? 1: $n*numRank(--$n);
}

作者: xuzuning   发布时间: 2011-11-23

两个的算法复杂度是一个等级的 那么两个都可以了

作者: JustBeBetter   发布时间: 2011-11-23

相关阅读 更多