当前位置:网站首页>C语言 函数递归
C语言 函数递归
2022-08-04 00:08:00 【卷饼85】
函数递归
函数递归就是自己调用自己来解决问题。
在解决一个问题时,通过对问题进行一次次的分解得到所对应的值,然后再将每次解决的问题所得的值进行合并,最终解决问题。

优点
代码简洁清晰,可读性好
缺点
1.时间和空间消耗较大。每一次函数调用都需要在栈中分配空间,往栈里面存入和取出数据都需要时间。
2.递归会造成栈溢出的问题。栈的大小是有限的,如果函数递归深度太大,所需要的内存空间可能会大于栈区的内存,会造成栈溢出的情况。
习题
1到n的和
1到n的和
int add(int n)
{
if (n == 1)return 1;
return add(n - 1) + n;
}
int main()
{
printf("%d",add(4));
return 0;
}
运行结果:
斐波那契数列
斐波那契数列
int fei(int n)
{
if (n == 1 || n == 2)return 1;
return fei(n - 1) + fei(n - 2);
}
int main()
{
printf("%d",fei(6));
return 0;
}
运行结果:
二分查找递归
二分查找递归
int BinarySearch0(int*nums,int target,int begin,int end)
{
int mid = begin + (end-begin) / 2;
if (begin > end)return -1;
if (nums[mid] > target)return BinarySearch0(nums, target, begin, mid - 1);
else if (nums[mid] < target)return BinarySearch0(nums, target, mid + 1, end);
else if (nums[mid] == target)return mid;
return {
};
}
int main()
{
int nums[] = {
1,2,3,4,6,7,8,9};
printf("%d",BinarySearch0(nums,6,0,7));//打印出6所在的下标
return 0;
}
运行结果:
倒着打印数字
递归打印数字
void a(int n)
{
if (n != 0)
{
printf("<%d>", n % 10);
a(n / 10);
}
}
int main()
{
a(123123123);
return 0;
}
运行结果:
边栏推荐
- ros mavros stereo读取rosbag并记录IMU和图片到文件夹
- 2022-08-03:以下go语言代码输出什么?A:2;B:3;C:1;D:0。 package main import “fmt“ func main() { slice := []i
- Jar a key generation document database
- 一文参透分布式存储系统Ceph的架构设计、集群搭建(手把手)
- 迭代扩展卡尔曼滤波IEKF
- Three.js入门详解
- The "interaction design" battle of the smart cockpit
- 初始 List 接口
- 并查集详解
- 【深度学习】基于tensorflow的服装图像分类训练(数据集:Fashion-MNIST)
猜你喜欢
随机推荐
详谈RDMA技术原理和三种实现方式
北京电竞元宇宙论坛活动顺利召开
Prometheus监控Harbor(二进制版)
七夕活动浪漫上线,别让网络拖慢和小姐姐的开黑时间
Flutter教程之为什么 Flutter 是创业的最佳选择?
搭建好pytorch环境后,pip和conda指令不能用
状态机实验
The curl using guide
BPF 可移植性和 CO-RE(一次编译,到处运行)
卡尔曼滤波器KF
DataBinding下的RecycleView适配器Adapter基类
LeetCode 19:删除链表的倒数第 N 个结点
建木DevOps流程的快速运用
curl使用指南
利用matlab求解线性优化问题【基于matlab的动力学模型学习笔记_11】
通过whl安装第三方包
数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战
2023年第六届亚太应用数学与统计学国际会议(AMS 2023)
SQL优化的一些建议,希望可以帮到和我一样被SQL折磨的你
OpenCV 图像拼接









