Python 简单数值递归

Python 简单数值递归,所有的数值计算都能以递归的方式定义。可访问维基百科,了解皮亚诺公理的更多相关信息。

从这些公理中不难看出加法是通过一个更基本的概念,数字 n 的下一个数(也称“后继数”)S(n),以递归的方式定义的。

为了便于理解,首先定义前置函数 P(n),当 n\not=0 时,该函数满足 n = S(P(n))=P(S(n))。

这样就可以通过递归的形式定义两个自然数之间的加法了,如下所示:

Python 简单数值递归

如果用更常见的 n+1 和 n-1 代替 S(n)和P(n),那么有add(a,b) = add(a-1,b+1)。

可以将上述公式转换为Python代码,如下所示:

def add(a: int,b: int) -> int:
    if a == 0:
        return b
    else:
        return add(a - 1, b + 1)

只是按Python语法把数学符号重排了一下,无他。

实际上,无须用Python写函数实现加法计算,利用Python已有的功能就足以实现各种算术运算了。举这个例子是想说明能以递归的方式定义基本的标量计算,其实现也不复杂。

递归定义至少包括两种情况:非递归情形(也称“基础情形”),直接返回确定的值;递归情形,函数通过不同的输入参数对自身的调用给出返回值。

为了确保递归能结束,必须搞清楚输入值向非递归参数靠近的机制。前面定义的函数中虽然没写,但输入参数往往是有条件约束的。例如在前面定义的add()函数中,输入值的约束是:assert a >= 0 and b >= 0

如果没有这些约束,就不能保证a取-1时函数向a == 0靠近。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程