函数的递归

简介: 函数的递归

函数递归概念

//递归就是函数自己调用自己
#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;
}
//需要运行的计算太大了,直接中途停止了。

递归误区

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

致谢

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

相关文章
|
算法
函数递归(详细解读)(上)
函数递归(详细解读)(上)
函数递归(详细解读)(下)
函数递归(详细解读)(下)
|
编译器
【函数和函数递归】
【函数和函数递归】
57 0
|
3月前
利用递归函数调用
利用递归函数调用。
35 9
|
4月前
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
106 0
|
6月前
|
C语言
C语言函数递归详解:理解递归的原理与应用
C语言函数递归详解:理解递归的原理与应用
126 0
|
7月前
|
C语言
函数递归.
这篇内容介绍了递归的概念,指出在C语言中递归是函数自我调用。它通过一个简单的死递归示例展示了未设置停止条件会导致栈溢出。接着,文章阐述了递归的两个必要条件:存在限制条件以终止递归,以及每次递归调用都更接近这个限制条件。随后,文章通过计算阶乘和顺序打印整数位的例子展示了递归的应用,并对比了递归和迭代的效率,强调在存在冗余计算时,迭代通常比递归更高效。
37 0
|
7月前
|
机器学习/深度学习 算法
详解函数递归
详解函数递归
|
7月前
|
算法 C#
C#递归详解
C#递归详解
58 0
|
7月前
|
机器学习/深度学习 编译器 C语言
关于函数递归的基础
关于函数递归的基础
55 5