函数的递归

简介: 函数的递归

函数递归概念

//递归就是函数自己调用自己
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  printf("hehe");
  main();
  return 0;
}
//陷入了死循环

递归例子

例1:阶乘计算

//算n的阶乘
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Func(int i)
{
  if (i == 0)
    return 1;
  else
    return (i * Func(i - 1));
}
int main()
{
  int i = 0;
  scanf("%d", &i);
  int a = Func(i);
  printf("%d", a);
  return 0;
}
//先递推到临界值,再回归。

例2:按顺序打印每一位

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void Printf(int i)
{
  if (i >= 9)
    Printf(i / 10);
  printf("%d", i % 10);
}
int main()
{
  int i;
  scanf("%d", &i);
  Printf(i);
  return 0;
}

例3:运行时堆栈

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Func(int i)
{
  printf("%d", i);
  if (i < 100000)
    Func(i+1);
  else
    printf("%d", i);
  return 0;
}
int main()
{
  int i = 0;
  scanf("%d", &i);
  Func(i);
  return 0;
}
//需要运行的计算太大了,直接中途停止了。

递归误区

  递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有大量重复计算,⽽且递归层次越深,冗余计算就会越多,导致反而不能完成任务。

致谢

 感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

相关文章
|
人工智能 小程序
测评内容提交
作为一名幼儿教师,我在AI-shifu的帮助下,使用通义灵码完成了个人首个小程序——文件自动分类与重命名。从零开始,通过简单的复制粘贴,再到提出具体需求如根据图片内容重命名,整个过程流畅且成功,极大地激发了我的学习兴趣。通义灵码不仅是编程新手的得力助手,更是开启新世界的钥匙。
122 1
|
测试技术 5G
基于TSUNG对MQTT进行压力测试-测试结果
基于TSUNG对MQTT进行压力测试-测试结果
290 0
|
2天前
|
云安全 人工智能 自然语言处理
AI说的每一句话,都靠谱吗?
阿里云提供AI全栈安全能力,其中针对AI输入与输出环节的安全合规挑战,我们构建了“开箱即用”与“按需增强”相结合的多层次、可配置的内容安全机制。
|
9天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
3天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
396 184
|
1天前
|
数据采集 消息中间件 人工智能
跨系统数据搬运的全方位解析,包括定义、痛点、技术、方法及智能体解决方案
跨系统数据搬运打通企业数据孤岛,实现CRM、ERP等系统高效互通。伴随数字化转型,全球市场规模超150亿美元,中国年增速达30%。本文详解其定义、痛点、技术原理、主流方法及智能体新范式,结合实在Agent等案例,揭示从数据割裂到智能流通的实践路径,助力企业降本增效,释放数据价值。