欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

递归函数

程序员文章站 2022-07-12 09:56:01
...

递归函数:自己调用自己的函数式递归函数。定义递归函数时,为了避免不断的重复循环不停止,应当引入判定条件。

以一个二叉树遍历例子来讲解:

二叉树的图为:递归函数

 二叉树遍历的代码为:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct BiNode
{
	char ch;
	struct BiNode *lchild;
	struct BiNode *rchild;
};


//二叉树递归遍历
void recursion(struct BiNode *root)
{
	if (NULL==root)
	{
		return;
	}
	//后序遍历
	//递归遍历左子树
	recursion(root->lchild);

	//递归遍历右子树
	recursion(root->rchild);

	printf("%c", root->ch);

}

void test()
{
	struct BiNode nodeA = { 'A', NULL, NULL };
	struct BiNode nodeB = { 'B', NULL, NULL };
	struct BiNode nodeC = { 'C', NULL, NULL };
	struct BiNode nodeD = { 'D', NULL, NULL };
	struct BiNode nodeE = { 'E', NULL, NULL };
	struct BiNode nodeF = { 'F', NULL, NULL };
	struct BiNode nodeG = { 'G', NULL, NULL };
	struct BiNode nodeH = { 'H', NULL, NULL };


	nodeA.lchild = &nodeB;
	nodeA.rchild = &nodeF;

	nodeB.rchild = &nodeC;

	nodeC.lchild = &nodeD;
	nodeC.rchild = &nodeE;

	nodeF.rchild = &nodeG;

	nodeG.lchild = &nodeH;


	recursion(&nodeA);

}



int main()
{
	test();
	system("pause");
	return 0;
}

递归(后序)遍历的代码:

递归函数

 补充:先序遍历可将代码行2、3、4改为4、2、3,中序遍历可将代码行改为2、4、3。

 代码运行的结果为:

递归函数

 代码运行的结果为:DECBHGFA