Recursion 识别递归函数

Recursion 识别递归函数,recursion,Recursion,正如我所知,递归函数是一个调用它自身的函数,它有一个基本情况的特征。这是一个用于二叉树的预序遍历的函数。这是递归函数吗?缺乏基本情况使我困惑 void pre_order(struct node* current){ // preorder traversal printf("%d\n",current->data); if(current->left != NULL){ pre_order(current->left); }

正如我所知,递归函数是一个调用它自身的函数,它有一个基本情况的特征。这是一个用于二叉树的预序遍历的函数。这是递归函数吗?缺乏基本情况使我困惑

void pre_order(struct node* current){ // preorder traversal

    printf("%d\n",current->data);

    if(current->left != NULL){
        pre_order(current->left);
    }

    if(current->right !=NULL){
        pre_order(current->right);
    }
}

因为它调用自己,所以它是一个递归函数。这就是它的简单之处。这里也有一个基本情况,但可能有点隐藏。当我们到达这个二叉树中的一个叶子时,左边和右边的child都将等于null,因此不再发生递归调用。这是我们的基本情况,有点隐藏。

如果
current->left=current->right=NULL怎么办?是的,然后函数退出。这就是基本情况?