【学习笔记】【C语言】递归
2015-07-06 15:15
676 查看
一、基本内容:
C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。
要点:
1、C语言函数可以递归调用。
2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。
二、递归条件
采用递归方法来解决问题,必须符合以下三个条件:
1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。
说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。
2、可以应用这个转化过程使问题得到解决。
说明:使用其他的办法比较麻烦或很难解决,而使用递归的方法可以很好地解决问题。
3、必定要有一个明确的结束递归的条件。
说明:一定要能够在适当的地方结束递归调用。不然可能导致系统崩溃。
三、代码
C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。
要点:
1、C语言函数可以递归调用。
2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。
二、递归条件
采用递归方法来解决问题,必须符合以下三个条件:
1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。
说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。
2、可以应用这个转化过程使问题得到解决。
说明:使用其他的办法比较麻烦或很难解决,而使用递归的方法可以很好地解决问题。
3、必定要有一个明确的结束递归的条件。
说明:一定要能够在适当的地方结束递归调用。不然可能导致系统崩溃。
三、代码
/* 设计一个函数,用来计算b的n次方 递归的2个条件: 1.函数自己调用自己 2.必须有个明确的返回值 */ #include <stdio.h> int pow2(int b, int n); int main() { int c = pow2(3, 2); printf("%d\n", c); return 0; } /* pow2(b, 0) == 1 pow2(b, 1) == b == pow2(b, 0) * b pow2(b, 2) == b*b == pow2(b, 1) * b pow2(b, 3) == b*b*b == pow2(b, 2) * b 1> n为0,结果肯定是1 2> n>0,pow2(b, n) == pow2(b, n-1) * b */ int pow2(int b, int n) { if (n <= 0) return 1; return pow2(b, n-1) * b; } /* int pow2(int b, int n) { // 用来保存计算结果 int result = 1; //result *= b; //result *= b; //result *= b; //result *= b; //.... //n次 for (int i = 0; i<n; i++) { result *= b; } return result; }*/
相关文章推荐
- C++类型转化:static_cast,reinterpret_cast,dynamic_cast,const_cast
- C++类型转化:static_cast,reinterpret_cast,dynamic_cast,const_cast
- C++ ofstream和ifstream详细用法 及文件操作 导入到EXCEL
- C++笔试题第三波
- 黑马程序员——C语言---预处理指令
- 循环队列的C++实现以及假溢出的解决方法
- C++的异常处理
- C++ Bit Fields
- vc++加载透明png图片方法-GDI+和CImage两种
- C语言入门:03.关键字、标识符、注释
- 《C语言及程序设计》程序阅读——位运算及其应用
- C++编译器符号表有哪些内容?(程序员面试笔试笔记47页提到----符号表)
- c语言位运算有什么作用?
- C语言学习笔记:16_位运算
- [C语言]一个很实用的服务端和客户端进行UDP通信的实例
- 黑马程序员——C语言—结构体变量存储原理
- C语言学习笔记:15_c语言中的进制操作.c
- C++数组和指针
- C++变量和基本类型
- 1001. A+B Format (20)