
上QQ阅读APP看书,第一时间看更新
8-9 递归式方法设计
一个方法(也可以解释为函数)可以调用其他方法也可以调用自己,其中,调用本身的动作称为递归式调用,递归式调用有下列特点。
(1)每次调用自己时,都会使范围越来越小。
(2)必须要有一个终止的条件来结束递归函数。
递归方法可以使程序变得很简洁,但是设计这类程序如果一不细心很容易掉入无限循环的陷阱,所以使用这类函数时一定要特别小心。递归方法最常见的应用是处理正整数的阶乘,一个正整数的阶乘是所有小于以及等于该数的正整数的积,同时如果正整数是0则阶乘为1,依照概念正整数是1时阶乘也是1。此阶乘数字的表示法为n!。

阶乘数概念是由法国数学家克里斯蒂安·克兰普(Christian Kramp,1760—1826)所提出的,他虽学医但却对数学感兴趣,发表了许多数学文章。
程序实例ch8_23.py:使用递归方法执行阶乘运算。

执行结果

上述factorial()方法的终止条件是参数值为1的情况,由第7行判断然后返回1,下面是正整数为3时递归函数的情况解释。
