当前位置:网站首页>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;
}
运行结果:
边栏推荐
猜你喜欢
The Chinese Valentine's Day event is romantically launched, don't let the Internet slow down and miss the dark time
YOLOv7改进之二十二:涨点神器——引入递归门控卷积(gnConv)
Salesforce的中国区业务可能出现新变化,传言可能正在关闭
Jmeter-断言
XSLT – 服务器端概述
数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战
ENS域名注册量创历史新高 逆市增长之势?光环之下存在炒作风险
Talking about the future development direction of my country's industrial parks
FinClip, help smart TV more imagination
全球首款量产,获定点最多!这家AVP Tier1如何实现领跑?
随机推荐
Shell 用法梳理总结
双目IMU标定kalibr
Node.js的基本使用(三)数据库与身份认证
分子个数 数论(欧拉函数 前缀和
LYVE1抗体丨Relia Tech LYVE1抗体解决方案
Spinnaker调用Jenkins API 返回403错误
c语言分层理解(c语言指针(上))
【每日一题】899. 有序队列
- the skip/skipif Pytest learning
国内首发可视化智能调优平台,小龙带你玩转KeenTune UI
汉字风格迁移---结合本地和全局特征学习的中文字体迁移
win10+cuda11.7+pytorch1.12.0安装
Shell编程之循环语句与函数
libnet
【性能优化】MySQL性能优化之存储引擎调优
分布式事务框架 seata
详谈RDMA技术原理和三种实现方式
FastDFS 一文读懂
TypeScript学习
rsync 基础用法