糊里糊涂的递归和递归经典题(上)

简介: 糊里糊涂的递归和递归经典题

🐲前言+目录:

递归是C语言中非常重要的知识点,其中的大事化小等思想对初学C语言的小伙伴来说不是很友好,因此我整理了递归的经典题目并向外拓展,给你全面的介绍,重新认识递归🌍🌎


🐲递归知识点:

递归概念:程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接 调用自身的 一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略 只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

🔥通俗理解就是:函数自己调用自己

🔥递归的主要思考方式就是大事化小

 

递归的两个必要条件

1.存在限制条件,当满足这个限制条件的时候,递归便不再继续

2.每次递归调用之后越来越接近这个限制条件

(满足以上必要条件的不一定是递归,但不满足条件的一定不是递归)


🐲上题:

第一题:

接收一个整型数值,按照顺序打印它的每一位

输入:1234          输出:1 2 3 4

来看看函数内部:

 

1. #include <stdio.h>
2. 
3. void print(int n)
4. {
5.  if (n > 9)
6.  {
7.    print(n / 10);
8.  }
9.  printf("%d ", n % 10);
10. }
11. int main()
12. {
13.   int n = 0;
14.   scanf("%d", &n);
15.   print(n);
16. 
17.   return 0;
18. }

第二题:

求 n 的阶乘

进入函数内部:

 

1. #include <stdio.h>
2. 
3. int factorial(int n)
4. {
5.  if (n <= 1)
6.    return 1;
7.  else
8.    return n * factorial(n - 1);
9. }
10. 
11. int main()
12. {
13.   int n = 0;
14.   scanf("%d", &n);
15.   int ret = factorial(n);
16.   printf("%d\n", ret);
17. 
18.   return 0;
19. }

 

第三题:

用递归的方法求字符串长度

 

1. #include <stdio.h>
2. 
3. int my_strlen(char* str)
4. {
5.  if (*str == '\0')
6.    return 0;
7.  else
8.    return 1 + my_strlen(str + 1);
9. 
10. }
11. int main()
12. {
13.   char arr[] = "hello";
14.   int ret = my_strlen(arr);
15.   printf("%d\n", ret);
16. 
17.   return 0;
18. }

 

第四题:

用递归求第n个斐波那契数(不考虑溢出)

进入函数内部:

 

1. #include <stdio.h>
2. 
3. int Fib(int n)
4. {
5.  if (n <= 2)
6.    return 1;
7.  else
8.    return Fib(n - 1) + Fib(n - 2);
9. }
10. 
11. int main()
12. {
13.   int n = 0;
14.   scanf("%d", &n);
15.   int ret = Fib(n);
16.   printf("%d\n", ret);
17. 
18.   return 0;
19. }


相关文章
|
5月前
|
算法 Java Serverless
【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题
【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题
|
6月前
经典递归问题:汉诺塔【超详解】
经典递归问题:汉诺塔【超详解】
|
9月前
糊里糊涂的递归和递归经典题(下)
糊里糊涂的递归和递归经典题(下)
|
10月前
认识了解递归的原理,学会递归的运用
认识了解递归的原理,学会递归的运用
|
算法 C++ 异构计算
|
存储 算法 程序员
算法学习<3>---递归
算法学习<3>---递归
79 0
算法学习<3>---递归
|
算法
算法提升 (四) 递归
算法提升 (四) 递归
108 0
算法提升 (四) 递归
|
算法 程序员
算法之递归
算法之递归
83 0
算法之递归
|
机器学习/深度学习 开发者 Python
递归的练习| 学习笔记
快速学习递归的练习
56 0