递归算法经典实例c语言(树形递归算法经典实例)

经典实例-阶乘

阶乘是递归算法的经典实例之一,它用来计算一个正整数的阶乘,即n!。定义阶乘函数fact(n),若n等于0或1,则返回1;否则,返回n乘以(n-1)的阶乘。

使用递归算法实现该函数的代码如下:


int fact(int n) {
if(n==0 || n==1) {
return 1;
}
return n * fact(n-1);
}

上述代码中,当输入的n为0或1时,函数直接返回1。否则,函数返回n乘以(n-1)的阶乘,通过递归调用自身来实现。

经典实例-斐波那契数列

斐波那契数列是另一个递归算法的经典实例,它定义了一个数列,该数列中的每个数字都是前两个数字之和。斐波那契数列通常以F(n)表示,其中n为非负整数。

使用递归算法实现斐波那契数列的代码如下:


int fib(int n) {
if(n==0 || n==1) {
return n;
}
return fib(n-1) + fib(n-2);
}

上述代码中,当输入的n为0或1时,函数直接返回n。否则,函数返回前两个数字之和,通过递归调用自身来实现。

经典实例-二叉树遍历

二叉树遍历是递归算法的常见应用。二叉树可以前序、中序或后序方式进行遍历。其中,前序遍历先访问根节点,然后遍历左子树和右子树;中序遍历先遍历左子树,然后访问根节点和右子树;后序遍历先遍历左子树和右子树,然后访问根节点。

使用递归算法实现二叉树的前序、中序和后序遍历的代码如下:


// 前序遍历
void preOrder(TreeNode* root) {
if(root != NULL) {
printf("%d ", root->val);
preOrder(root->left);
preOrder(root->right);
}
}

// 中序遍历
void inOrder(TreeNode* root) {
if(root != NULL) {
inOrder(root->left);
printf("%d ", root->val);
inOrder(root->right);
}
}

// 后序遍历
void postOrder(TreeNode* root) {
if(root != NULL) {
postOrder(root->left);
postOrder(root->right);
printf("%d ", root->val);
}
}

上述代码中,分别定义了前序遍历、中序遍历和后序遍历的函数。在遍历每个节点时,先访问根节点,然后递归调用函数遍历左子树和右子树。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/cyuyan05.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年7月29日 上午4:47
下一篇 2023年7月29日 上午4:47

猜你喜欢