php
function fact($n)
{
if($n == 0)
{
return 1;
} else
{
return $n * fact($n - 1);
}
}
var_dump(fact(5));
堆栈是一种后进先出的压入和弹出数据结构。 递归的实现是因为函数的每个执行过程在栈中都有自己的数组和局部变量的备份递归php,而这个备份与函数的其他进程等等无关。 这些机制是在大多数编程语言中实现子例程结构的基础。
程序跟踪
0.0731 120296 +16 -> fact($n = 5)
0.0733 120328 +32 -> fact($n = 4)
0.0735 120360 +32 -> fact($n = 3)
0.0736 120392 +32 -> fact($n = 2)
0.0738 120424 +32 -> fact($n = 1)
0.0739 120456 +32 -> fact($n = 0)
0.0740 120488 >=> 1
0.0742 120456 >=> 1
0.0750 120424 >=> 2
0.0753 120392 >=> 6
0.0754 120360 >=> 24
0.0756 120328 >=> 120
0.0757 120328 -128 -> var_dump(120)
爪哇
class Fact
{
public static void main(String[] args)
{
System.out.println(fact(6));
}
public static int fact(int n){
if (n == 0)
{
return 1;
} else {
return n*fact(n-1);
}
}
}