让我们来看看执行情况.
fact(5):
5 is not 0, so fact(5) = 5 * fact(4)
what is fact(4)?
fact(4):
4 is not 0, so fact(4) = 4 * fact(3)
what is fact(3)?
fact(3):
3 is not 0, so fact(3) = 3 * fact(2)
what is fact(2)?
fact(2):
2 is not 0, so fact(2) = 2 * fact(1)
what is fact(1)?
fact(1):
1 is not 0, so fact(1) = 1 * fact(0)
what is fact(0)?
fact(0):
0 IS 0, so fact(0) is 1
现在让我们收集结果.
fact(5) = 5* fact(4)
在我们的结果中代替事实(4)
fact(5) = 5 * 4 * fact(3)
在我们的结果中代替事实(3)
fact(5) = 5 * 4 * 3 * fact(2)
在我们的结果中代替事实(2)
fact(5) = 5 * 4 * 3 * 2 * fact(1)
在我们的结果中代替事实(1)
fact(5) = 5 * 4 * 3 * 2 * 1 * fact(0)
在我们的结果中代替事实(0)
fact(5) = 5 * 4 * 3 * 2 * 1 * 1 = 120
你有它.递归是通过将其视为成功较小的问题来解决较大问题的过程,直到您达到一个简单(或“基础”)的情况.