Bonjour,
Pour ce qui débute la programmation, je vous demande d'exécuter les codes PHP et JAVA pour le factoriel d'un nombre.

CODE PHP : FactorialCalculator.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
 
  class FactorialCalculator
  {                 
     public function factorial( $number )            
     {                                               
        if ( $number <= 1 ) 
           return 1; 
        else 
           return $number * $this->factorial( $number - 1 );  
     } 
 
     public function displayFactorials()
     {
        for ( $counter = 0; $counter <= 20; $counter++ )
           printf( "%d! = %d\n", $counter, $this->factorial( $counter ) );
     } 
  } 
?>
Pour l'exécution du CODE PHP : FactorialTest.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<?php
require_once(dirname(__FILE__).'/FactorialCalculator.php');
$factorialCalculator = new FactorialCalculator();
$factorialCalculator->displayFactorials();
?>
Résultats de l'exécution en ligne de commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
php FactorialTest.php
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 1932053504
14! = 1278945280
15! = 2004310016
16! = 2004189184
17! = -288522240
18! = -898433024
19! = 109641728
20! = -2102132736

CODE JAVA : FactorialCalculator.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
  public class FactorialCalculator
  {
 
     public long factorial( long number )            
     {                                               
        if ( number <= 1 ) 
           return 1; 
        else 
           return number * factorial( number - 1 );  
     } 
 
     public void displayFactorials()
     {
        for ( int counter = 0; counter <= 20; counter++ )
           System.out.printf( "%d! = %d\n", counter, factorial( counter ) );
     } 
  }
Pour l'exécution du CODE JAVA: FactorialTest.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
public class FactorialTest
 {
      public static void main( String args[] )
      {
         FactorialCalculator factorialCalculator = new FactorialCalculator();
        factorialCalculator.displayFactorials();
     } 
  }
Compilation CODE JAVA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
javac FactorialCalculator.java
javac FactorialTest.java
Résultats de l'exécution en ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
java FactorialTest
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 1307674368000
16! = 20922789888000
17! = 355687428096000
18! = 6402373705728000
19! = 121645100408832000
20! = 2432902008176640000

Remarque : Les deux codes sont exécutés sur une même machine debian 4.0. Version PHP : 5.2.9

Question : Pourquoi cette différence de résultats ?