标签:写入 令行 设计 简化 部分 维护 idt 问题 递归
递归学习心得:
递归即是该函数调用它本身自己,这种调用过程称为递归。
递归可以相当于循环,所以想结束递归,就必须有终止递归的条件测试部分,否则就会出现无限递归(即无限循环)。
递归就是某过程以某种方式重复出现,很多“计算”也以某种方式重复出现。
例如:
数学归纳法中的递归:证明一个与自然数n有关的命题P(n),有如下步骤:
(1)证明当n取第一个值n0时命题成立(n0对于一般数列取值为0或1)
(2)假设当n=k(k≥n0,k为自然数)时命题成立,证明当n=k+1时命题也成立。
递归(优缺点)与循环
使用循环的地方都可以使用递归
缺点:
递归快速耗内存
不方便阅读和维护
效率低
优点:
简洁
适合解决阶乘、涉及相反顺序的编程问题
函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
递归有直接递归和间接递归
用递归法求解问题时的方法:
列出递归方程/思路
写出递归函数
调用递归函数
递归经典的问题汉诺塔问题
C语言中以符号"#"开头的命令
(1)宏定义:#define...
(2)文件包含:#include...
(3)条件编译:#ifdef...
宏就是替换,其分两类:简单的字符替换和带参数的宏替换。
宏定义语法:#define 标识符字符串带参数的宏定义
语法:#define宏名(参数表)字符串
例如
#defineS(a,b)a*b,其中a、b为宏的参数
“文件包含”处理
所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来。
“文件包含”命令的作用:
“文件包含”命令可以节省程序设计人员的重复劳动
将常用的一组固定常量的定义组成一个文件——方便,易修改
库函数的开发者将对被调用的函数的原型声明写入头文件,程序员只需
要#include<头文件>——大大简化了程序
一行#include,相当于写几十、几百,甚至更多行的内容
“文件包含”是模块化程序设计的产物
便于多个程序员分别编程
将公用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头
用包含命令包含该文件即可使用
公用的声明只写一次,除节省时间,更可观的是减少出错
条件编译
一般情况下,在进行编译时对源程序中的每一行都要编译。
条件编译:希望根据需要只编译程序中某一部分
条件编译命令常用在对程序的调试中。
条件编译的常用形式之二
#if常量表达式
程序段1
#else
程序段2
#endif
如常量表达式的值为真(非
0),则对程序段1进行编译,
否则对程序段2进行编译。因
此可以使程序在不同条件下,
完成不同的功能。
标签:写入 令行 设计 简化 部分 维护 idt 问题 递归
原文地址:http://www.cnblogs.com/Abreast-/p/7860189.html