2012-09-27 155 views
1

编写一个名为math的类。它有一个名为num的属性。它也有一个称为阶乘的方法(函数)。该方法从1开始,并将所有整数乘以num。如果num是5,那么你会乘以1 * 2 * 3 * 4 * 5。当然,你要循环做到这一点。如何正确执行PHP循环

我应该使用哪一个循环?为了或做什么?另外,我是否需要一个内部循环? 我开始与

For (i = 1; i <= 5; i++) 
{ 

} 
然而

,我是卡在下一步该怎么做......有什么建议?

回答

0
$result = 1; 
$target = 5; 
for ($i = 1;$ i <= $target; $i++) 
{ 
    $result *= $i; 
} 
echo $result; 

$result = 1; 
$target = 5; 
while($target > 0) { 
    $result *= $target; 
    $target--; // You could do this all in one line, but for learners, this is clearer. 
} 

echo $result; 
0

,你会想你可以使用任何循环做的$i

class Math { 

    public static function Factorial($factorial) { 
     $output = 1; 

     for($i = 2; $i <= $factorial; $i++) 
      $output *= $i; 

     return $output; 
    } 

} 
+2

'1·0 = 0'. – Gumbo

+0

哎呦!编辑:P –

1

值乘以总的阶乘的每次迭代。 for循环可以转换为whiledo .. while而且相反也是如此。

for(i=0;i<5;i++) 

是相同

i=0; while(i<5){i++;} 

要找到你应该乘以所有的值从1到要数的阶乘阶乘。所以如果$num = 5。只需要一个单一的循环。你想运行这个循环。

for($i=1;$i<$num;$i++){ 
    $num*=$i; 
} 

这里我不给一个完整的解决方案,因为这个问题似乎是功课。如果我给你完整的解决方案,它将是勺子喂养。

0

我已经得到的地方,我喜欢while(i--)循环:

<?php 

class Math { 

    public $num = 0; 

    public function factorial() { 
     $result = 1; 
     $num = $this->num; 

     while ($num) { 
      $result *= $num--; 
     } 

     return $result; 
    } 

} 

$factor = new Math(); 

$factor->num = 5; 

echo $factor->factorial(); 

?> 

http://codepad.org/hUOgAoz2