分类: C/C++
2014-10-15 09:34:31
递归函数有2个只要组成部分:递归点-以不同参数调用自身,出口-不在递归调用。
递归函数必然会使用判断语句,递归函数在需要编写的时候定义函数得出口,否则栈会溢出,递归函数是一种分而治之的思想。
函数设计技巧:
1. 不要在函数中使用全局变量尽量让函数从意义上是一个独立的功能模块;
2. 参数名要能够体现参数的意义;
3. 如果参数是指针,且仅作输入参数用,则应在类型前加const以防止指针在函数体被意外修改void str_copy (char *str_dest, const char *str_src);
4. 不要省略返回值的类型,如果函数没有返回值,那么应声明为void类型;
5. 在函数体的入口处对参数的有效性进行检查,对指针的检查尤为重要;
6. 语句不可返回指向栈内存的指针,因为该内存在函数体结束时被自动销毁;
7. 函数体的规模要小,尽量控制在80行代码之内;
8. 相同的输入应当产生相同的输出,尽量避免函数带有“记忆”功能——少用static;
9. 避免函数有太多参数,参数个数尽量控制在4个以内;
10. 有时候函数不需要返回值但为了增加灵活性(如支持链式表达)可以附加返回值;
char s[64]; int len = strlen(strcpy(s, “android”));
a的输入是b的输出,b的输入是a的输出,完成链式表达。
11. 函数名与返回值类型在语义上不可冲突。