赞
踩
C语言中的递归函数是一种特殊的函数,它会调用自己来完成某项任务。递归函数通过把大问题分解为更小的相同类型的问题来解决,直到达到一个简单到可以直接解决的边界情况(称为基准情形或基本情况)。递归函数通常包含两个主要部分:
(1)基准情形(Base Case):递归必须有一个或多个基准情形,当到达这个基准情形时,函数不会再递归调用自身,而是返回一个值。基准情形是递归的出口,防止无限递归。
(2)递归步骤(Recursive Step):这是函数调用自己的部分,每次调用时,问题的规模都会减小,直到达到基准情形。
- #include<stdio.h>
- #include<stdlib.h>
-
- int getFactor(int num)
- {
- if(num > 12){
- puts("越界!"); //当数据值越界时,终止程序
- exit(-1);
- }
- int result;
-
- if(num == 1){
- result = 1; //基准情形,当达到这个基准情形时函数不会再递归调用自身,而是返回一个值。目的是防止无限递归
- }else{
- result = getFactor(num - 1) * num; //递归步骤,函数调用自己,同时问题规模减小直至到达基准情形
- }
- return result;
- }
-
-
- int main()
- {
- int num;
- int numFactor;
-
- printf("请输入所求的阶乘数:\n");
- scanf("%d",&num);
-
- numFactor = getFactor(num);
- printf("%d的阶乘是:%d\n",num,numFactor);
-
- return 0;
- }

输出将是:
- 请输入所求的阶乘数:
- 11
- 11的阶乘是:39916800
我们在程序中加入了一个判断模块,因为一个整型数据占4个字节,32位,能表示的最大数据为2的32次方:4,294,967,296 < 13! = 6,227,020,800。故我们设置当数据大于12的时候,终止程序。
当数据大于12时,输出将是:
- 请输入所求的阶乘数:
- 15
- 越界!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。