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;
}