C语言 学习 日志 递归函数 2024/12/12

C语言 学习 日志 递归函数

介绍:

  1. 初始调用:递归函数被首次调用。
  2. 递归调用:递归函数在其定义中调用自身,创建新的栈帧。
  3. 基本情况检查:每次递归调用时,检查是否满足基本情况。如果满足,返回结果并开始回溯。
  4. 回溯:递归调用返回,相应的栈帧被移除,控制权交还给上一级调用。
  5. 结果组合:递归调用返回的结果被组合起来,形成最终的结果。

递归函数的应用场景

递归函数广泛应用于各种算法和数据结构操作中。例如:

  • 数学计算:如计算阶乘、斐波那契数列等。
  • 树和图的遍历:如深度优先搜索(DFS)、二叉树的前序、中序和后序遍历等。
  • 分治算法:如快速排序、归并排序等。
  • 动态规划:如计算最长公共子序列、背包问题等。

递归函数的核心思想是将一个复杂的问题分解为一个或多个较小的子问题,

这些子问题的结构与原问题相似。

通过不断调用自身,递归函数可以逐步解决这些子问题,最终解决原问题。

简单理解就是 : 在函数中定义自己调用自己 直到满足条件

复制代码
int dg(int n){

if(n==0)
{

return 1;
}
else{

return n * dg(n-1);
}



}

/*这个函数首先判断n是否为0,
如果是则返回1(因为0和1的阶乘定义为1)。如果n大于1,则通过递归调用dg(n - 1)并乘以n来计算n的阶乘。*/
相关推荐
还是奇怪9 分钟前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
小大宇1 小时前
python flask框架 SSE流式返回、跨域、报错
开发语言·python·flask
柒星栈2 小时前
PHP 源码怎么加密防破解?三套方案实战指南
开发语言·php·android studio
勉灬之2 小时前
Next.js + Prisma 跨平台部署踩坑记
开发语言·javascript·ecmascript
这是个栗子2 小时前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
蓝创工坊Blue Foundry2 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
会飞的小新2 小时前
C 标准库之 <fenv.h> 详解与深度解析
c语言·开发语言·microsoft
sulikey3 小时前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
雪的季节3 小时前
dir (obj) 与dir()
开发语言
大不点wow3 小时前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm