function ackermann($m, $n) { if ($m === 0) { return $n + 1; } elseif ($n === 0) { return ackermann($m - 1, 1); } return ackermann($m - 1, ackermann($m, $n - 1)); }
public function testWrongAnswers() { $this->assertNotEquals(ackermann(0, 0), 0); $this->assertNotEquals(ackermann(0, 3), 2); $this->assertNotEquals(ackermann(0, 2), 5); $this->assertNotEquals(ackermann(2, 2), 10); $this->assertNotEquals(ackermann(2, 4), 12); $this->assertNotEquals(ackermann(3, 2), 40); $this->assertNotEquals(ackermann(3, 5), 256); }
function ackermann($m, $n) { $x = 4; $y = 2; $z = 14; $foo = "lajflajf"; $boo = "afljadjfj"; if ($m === 0) { return $n + $y * $x + $x * $y - 4 - $x - $x - 3; } elseif ($n === 0) { return ackermann($m - $y * $x + $x * $y - 4 - $x - $x - 3 + $z, 1); } return ackermann($m - $y * $x + $x * $y - 4 - $x - $x - 3 + $z, ackermann($m, $n - $y * $x + $x * $y - 4 - $x - $x - 3 + $z)); }
echo "Total" . $pad . $num . "\n"; } $t0 = $t = start_test(); simple(); $t = end_test($t, "simple"); simplecall(); $t = end_test($t, "simplecall"); simpleucall(); $t = end_test($t, "simpleucall"); simpleudcall(); $t = end_test($t, "simpleudcall"); mandel(); $t = end_test($t, "mandel"); mandel2(); $t = end_test($t, "mandel2"); ackermann(7); $t = end_test($t, "ackermann(7)"); ary(50000); $t = end_test($t, "ary(50000)"); ary2(50000); $t = end_test($t, "ary2(50000)"); ary3(2000); $t = end_test($t, "ary3(2000)"); fibo(30); $t = end_test($t, "fibo(30)"); hash1(50000); $t = end_test($t, "hash1(50000)"); hash2(500); $t = end_test($t, "hash2(500)"); heapsort(20000); $t = end_test($t, "heapsort(20000)");
return $t['sec'] + $t['usec'] / 1000000; } function start_test() { ob_start(); return getmicrotime(); } function end_test($start, $name) { global $total; $end = getmicrotime(); ob_end_clean(); $total += $end - $start; $num = number_format($end - $start, 3); $pad = str_repeat(" ", 24 - strlen($name) - strlen($num)); echo $name . $pad . $num . "\n"; ob_start(); return getmicrotime(); } function total() { global $total; $pad = str_repeat("-", 24); echo $pad . "\n"; $num = number_format($total, 3); $pad = str_repeat(" ", 24 - strlen("Total") - strlen($num)); echo "Total" . $pad . $num . "\n"; } $t0 = $t = start_test(); ackermann(); $t = end_test($t, "ackermann()");
function main_function() { for ($i = 0; $i < 100; ++$i) { ackermann(4); ary(50000); ary2(50000); ary3(100); fibo(23); hash1(10000); hash2(200); heapsort(2000); matrix(3); nestedloop(8); sieve(5); strcat(80000); binary_trees(7); fannkuch(6); } }
<?php function Ack($m, $n) { if ($m == 0) { return $n + 1; } if ($n == 0) { return Ack($m - 1, 1); } return Ack($m - 1, Ack($m, $n - 1)); } function ackermann($n) { $r = Ack(3, $n); print "Ack(3,{$n}): {$r}\n"; } ackermann(3);
function main_function() { ackermann(2); ary(500); ary2(500); ary3(5); fibo(13); hash1(100); hash2(20); heapsort(200); matrix(3); nestedloop(3); sieve(1); strcat(80); binary_trees(3); fannkuch(6); }
function ackermann($m = 0, $n = 0) { if ($m == 0) { return $n + 1; } else { if ($m > 0 && $n == 0) { return ackermann($m - 1, 1); } else { return ackermann($m - 1, ackermann($m, $n - 1)); } } }
function ackermann($x, $y, $r8) { global $__cache; if (isset($__cache[$x][$y])) { return $__cache[$x][$y]; } $result = 0; if ($x == 0) { // call6027 $result = ($y + 1) % 32768; } else { if ($y == 0) { // call6035 $result = ackermann($x - 1, $r8, $r8); } else { // call6048 $result = ackermann($x - 1, ackermann($x, $y - 1, $r8), $r8); } } $__cache[$x][$y] = $result; return $result; }