·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> 【学习笔记】【C语言】递归

【学习笔记】【C语言】递归

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

一、基本内容:
C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。
要点:
1、C语言函数可以递归调用。
2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。

二、递归条件
采用递归方法来解决问题,必须符合以下三个条件:
1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。
说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。
2、可以应用这个转化过程使问题得到解决。
说明:使用其他的办法比较麻烦或很难解决,而使用递归的方法可以很好地解决问题。
3、必定要有一个明确的结束递归的条件。
说明:一定要能够在适当的地方结束递归调用。不然可能导致系统崩溃。

三、代码

 1 /*
 2 设计一个函数,用来计算b的n次方
 3  
 4  递归的2个条件:
 5  1.函数自己调用自己
 6  2.必须有个明确的返回值
 7 */
 8 #include <stdio.h>
 9 int pow2(int b, int n);
10 
11 int main()
12 {
13     int c = pow2(3, 2);
14     
15     PRintf("%d\n", c);
16     return 0;
17 }
18 
19 /*
20  pow2(b, 0) == 1
21  pow2(b, 1) == b == pow2(b, 0) * b
22  pow2(b, 2) == b*b == pow2(b, 1) * b
23  pow2(b, 3) == b*b*b == pow2(b, 2) * b
24  
25  1> n为0,结果肯定是1
26  2> n>0,pow2(b, n) == pow2(b, n-1) * b
27  */
28 
29 int pow2(int b, int n)
30 {
31     if (n <= 0) return 1;
32     return pow2(b, n-1) * b;
33 }
34 
35 /*
36 int pow2(int b, int n)
37 {
38     // 用来保存计算结果
39     int result = 1;
40     
41     
42     //result *= b;
43     //result *= b;
44     //result *= b;
45     //result *= b;
46     //....
47     
48     //n次
49 
50     
51     for (int i = 0; i<n; i++)
52     {
53         result *= b;
54     }
55     
56     return result;
57 }*/