函数的递归 与 函数的设计技巧

递归函数

递归是数学领域中的概念在程序设计中的应用
递归是一种强有力的程序设计方法
递归的本质为函数内部在适当的时候调用自身

C递归函数有两个主要的组成部分:
1、递归点 – 以不同参数调用自身
2、出口– 不再递归调用

举例说明: 使用递归求阶乘

#include <stdio.h>
int func(int x)
{
    return (x>1) ? (x*func(x - 1)) : 1;
}

int main()
{
    printf("x! = %d\n", func(4));
    return 0;
}

C语言中的递归函数必然会使用判断语句。
递归函数在需要编写的时候定义函数的出口,否则
栈会溢出。

由于系统的栈空间有限,因此递归函数不能无限的使用。

函数设计技巧

1、不要在函数中使用全局变量,尽量让函数从意义上是一个独立的功能模块。

2、参数名要能够体现参数的意义
例如:
这里写图片描述
第二个函数的定义可以体现参数的意义。

3、如果参数是指针,且仅作输入参数用,则应在类型前加const,以防止该指针在函数体内被意外修改。
如:
这里写图片描述

4、不要省略返回值的类型,如果函数没有返回值,那么应声明为void类型。

5、在函数体的“入口处”,对参数的有效性进行检查,对指针的检查尤为重要。

6、语句不可返回指向“栈内存”的“指针”,因为该内存在函数体结束时被自动销毁。

7、函数体的规模要小,尽量控制在80行代码之内。

8、相同的输入应当产生相同的输出,尽量避免函数带有“记忆”功能。

9、避免函数有太多的参数,参数个数尽量控制在4个以内。

10、有时候函数不需要返回值,但为了增加灵活性,如支持链式表达,可以附加返回值
如:
这里写图片描述
strcpy赋值字符串就可以了,但是可以附加返回字符串,这样就可以直接进行求长度计算。

11、函数名与返回值类型在语义上不可冲突

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值