函数的递归(学习笔记)

简介: 函数的递归(学习笔记)

前言

依旧是我这个跑路人,学到了c语言中的重难点递归上了好好总结一波。



递归有点抽象所以我用例题来做主体进行讲解。


一、什么是递归

递归就是一个过程或一个函数在其定义或者说明中直接或间接调用自身的一种方法。

每次递归的时候系统都会为函数重新规划一片内存所以使用递归时不宜次数过多否则容易导致栈溢出。

我们在使用递归主要目的是为了大事化小将函数代码变得干净简洁。

二、例题

1.打印整数每一位

image.png


本题是实现整数的数字打印如输入1234 打印1 2 3 4


在使用递归时一定要学会在适当情况时结束递归,所以每一个使用递归完成的函数一定是要有自己的结束条件的本题的结束条件是:if(n>9)在一次次递归中函数从1234逐渐变为1无法进入语句中也就无法继续递归然后就先以n=1进行下条语句printf 然后返回 n = 12 时的函数时12%10得到了2 后面同上


是不是还挺简单的。

(这里有栈的思想,博主会在本篇文章评论中推荐一篇关于栈思想的文章)


2. 斐波那契数列

(个人感觉使用递归来解决函数问题十分简单)

首先条件: 前两个数为1后面为前两个数之和,高中都学过俺就不赘述了。


上代码!!

int feibo(int n)
{
  if (n <= 2)
  {
    return 1;
  }
  else
  {
    return feibo(n - 1) + feibo(n - 2);
  }
}
int main(void)
{
  int n = 0;
  scanf("%d", &n);
  int ret = feibo(n);
  printf("%d", ret);
  return 0;
}

我认为像斐波那契数列以及与他相似的数列都可以使用以下思想:

1.寻找首要条件,比如这道题的首要条件是当n<=2时 值为1其他的n值都可以从n<=2出衍生出来

2.找其他n值时与n<=2时的关系。

就写出了这个代码。青蛙跳台阶,汉诺塔也是相同原理。不过这个原理并不对所有的递归适用。(之后博主也会对此进行总结)



总结

还是重复一下由斐波那契数列总结出的结论

用递归时如果可以找到原始条件就用原始条件和后面规律来写递归可以大大降低难度哦~

建议多看两遍斐波那契例题讲解。

就这样,拜拜。


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