上面面是一个计算阶乘的递归函数示例
在这个函数中,如果n等于0,则返回1,否则返回n乘以调用自身并传入n-1的结果。这个过程会一直重复,直到n等于0为止。
需要注意的是,递归函数需要有一个终止条件,否则会导致无限递归,最终导致栈溢出
思想(自己编的,不准)
1.设置一个终止条件
2.设计从n到n-1成立(n到n+1)也行
3从而可得1到n成立;
实际上和数学的归纳法一样就只有一和二步,第三步只是逻辑推导
下面是例子(语言为c++)
例子1. 下面是一个计算阶乘的递归函数示例
在这个函数中,如果n等于0,则返回1,否则返回n乘以调用自身并传入n-1的结果。这个过程会一直重复,直到n等于0为止。
需要注意的是,递归函数需要有一个终止条件,否则会导致无限递归,最终导致栈溢出
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
例子 2 下面为数据结构中树添加新节点而使用的递归
下面的递归的边际条件为root 为空(即根节点为空)
Node *insert (Node *root, int key){
if (root == NULL) return getNewNode (key);
if (rand ()%2 ) root->lchild = insert (root->lchild,key);
else root->rchild = insert(root->rchild,key);
return root;
}