1、条件语句支持嵌套,可以在条件语句和执行语句中再嵌套条件语句。


2、while 与 do_while区别在于,如果循环条件语句是false,while语句不执行,而do_while保证循环体执行一次。


3、break语句用于结束最近的while、do_while、for或switch语句,并将程序的执行顺序传递给紧接在结束语句之后的语句。break语句可以出现在switch语句中,会退出循环。

continue语句可以让最近的循环语句的当次迭代提前结束。continue语句只能出现在循环语句中,只会终止当次执行循环体并且进入下一次循环体的执行。


4、 witch 后的圆括号内表达式的值,与其后的case列出的关键字比较,实现switch语句的分支功能。圆括号内的表达式必须产生一个整数结果,其值与每个case比较。每个case标号的值都必须是一个常量表达式。


5、 递归算法:一个过程或函数直接或间接调用自己本身,这种过程或函数叫递归过程或递归函数。

注意:递归算法运行效率较低,在递归调用过程中系统为每一层的返回点、局部量等开辟了栈来存储,使用递归的时候需要消耗比较多的栈空间,所以递归次数多容易造成栈溢出。在堆栈尺寸受到限制时候,一般需要避免使用递归。


此处重点有一个 河内塔的递归算法,结合《程序员面试宝典.白金版》(赵海军) 和 《C/C++程序员面试宝典》(梁镇宇),给出如下算法:

#include<iostream>
using namespace std;

void Move(int n,char i,char j) {
	cout<<"把"<<n<<"号从"<<i<<"移动到"<<j<<endl; 
}
void Hannoi(int n,char a,char b,char c) {
	if(n==1) {
		Move(1,a,c);
	}
	else {
		Hannoi(n-1,a,c,b);
		Move(n,a,c);
		Hannoi(n-1,b,a,c);
	}
}
int main() {
	cout<<"以下是4层汉诺塔的解法:"<<endl;
	Hannoi(4,'a','b','c');
	return 0;
}