三个例子掌握函数递归
创作时间:
作者:
@小白创作中心
三个例子掌握函数递归
引用
CSDN
1.
https://blog.csdn.net/2401_89044302/article/details/145739330
递归是编程中一种重要的算法思想,它通过将问题分解为更小的子问题来解决问题。本文通过三个具体的代码实例,帮助读者掌握函数递归的概念、实现方式以及适用场景。
递归 —> 大事化小
1.递归思想
递归是将问题转化为相似的较小问题,递推即递推回归。在C语言函数中可体现为函数调用函数自己。
2.函数的递归调用形式
if(递归终止条件成立) //在逐渐调用中接近终止条件
return 递归公式初值;
else
return 递归函数调用对应结果值;
3.简单函数递归实例
a.顺序打印数字的每一位
输入 6543
输出 6 5 4 3
void Print(int n)
{
if (n / 10 != 0)//递归结束条件
Print(n/10);
printf("%d ", n % 10);
}
这个函数通过递归调用自身,每次去掉数字的最后一位,直到数字只剩一位为止。然后在回溯的过程中,依次打印每一位数字。
b.计算阶乘
输入 5
输出 120
int Fit(int n)
{
if (n == 1)//递归结束条件
return 1;
else
return n * Fit(n - 1);
}
这个函数通过递归调用自身,每次将问题规模减小1,直到n等于1时返回1。然后在回溯的过程中,依次计算阶乘的值。
4.递归的适用情况
每次递归调用时占用内存空间,当递归层数过多时浪费栈帧过多且效率过低,也可能造成栈溢出。
例如计算第n个斐波那契数时:
int Fib(int n)
{
if (n <= 2)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
递归层数过多会造成栈溢出。解决使用递归调用层数少的问题时是使用递归的合适情形。反之可以选择运行成本较低效率较高的 迭代(通常是循环)。
在上例的体现为:
int Fib(int n)
{
int a=1, b=1, c=1, i;
for (i =3; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
return c;
}
这个迭代版本的斐波那契数列计算方法,通过循环和变量交换的方式,避免了递归带来的栈溢出风险,同时提高了计算效率。
热门推荐
笔记本电脑选购的五大关键因素详解
春节回家攻略:从银川到武汉的高铁大揭秘!
银川到武汉高铁正式开通!票价曝光
2025西安兵马俑最新打卡攻略:秦始皇的秘密
《蛋仔派对》S19哥特季盲盒皮肤大揭秘!
《蛋仔派对》嗷嗷皮肤评测:萌虎来袭!
冬日亲子游打卡:汕头小公园、南澳岛、潮州古城
跟着小兰导游玩转潮汕方特!
带娃游潮汕,跟团真的香!
小白虾:餐桌上的营养新星
亲子厨房大作战:小白虾DIY挑战
小白虾的多种特色烹饪方法,总有一款适合你!
大额刷卡 小额扫码 现金兜底 境外人员在深消费支付无忧体验丝滑
横屏视频如何剪辑成竖屏
华泰 | 保险:医改背景下的商业医疗险发展机遇
长治到新疆自驾游:打卡壶口瀑布和太行山!
长治到乌鲁木齐自驾游攻略,你准备好了吗?
《黄帝内经》揭秘:古代中医穴位背后的科学原理
中医经络+针灸:现代康复新宠
从《黄帝内经》到现代医学:揭秘中医穴位的发现之旅
《山海经》:中国最古老的志怪奇书
油酥制作完全指南:四种类型及关键比例详解
上海国际电影节科幻电影周:AI技术开启未来电影新纪元
国家版减肥指南来了!来看看这7种饮食方法哪种适合你?
霍金警告,《机械姬》里的AI伦理问题真不是闹着玩的!
《银翼杀手2049》:AI技术的未来想象与伦理思考
企业税务合规:高质量发展的基石
高净值人士逃税被查,后果严重!
琼瑶经典产学研解读,深远影响不容错过
北京园博园永定塔:传统建筑与现代技术的完美融合