·了解模块化程序设计的思想
·掌握函数定义、调用基本方法
·实现简单递归程序、理解调用过程
学C语言的小伙伴可能比较难理解的就是基础函数了,下面给大家用很简单易懂且详细的方式向大家展示了函数的定义、调用、递归函数到底是怎么在运作的。
一、函数的定义
二、函数的调用
判断三位数以内的所有质数并以每行5个的形式输出:
如下的这种函数调用方式一般是没有返回值(void):
三、递归函数
每次调用的形参名字都一样(n),但是占用的存储空间不同,因此不会造成冲突。随着“归”的进行,最后一次函数调用的相关首先出栈,每一层返回时,该层压入堆栈的信息出栈,直至栈空。因此,递归函数必须有明确的终止条件,否则将一直“递”下去,不断占用栈的空间,从而造成系统栈空间耗尽,产生“栈溢出”(Stack Overflow)的错误。
其实你也可以理解为递归函数就是不断向下套娃,直到有一个满足条件让他停下,而这个停止条件也是不能缺少的。
#include<stdio.h>
void MultiBase(int n,int B);
int main()
{
int n,B;
do
{
scanf("%d%d",&n,&B);
} while (n<=0||B<=1||B>16); //输入正确则跳出while循环
printf("change result:\n");
MultiBase(n,B); //调用递归函数
printf("\n");
return 0;
}
void MultiBase(int n,int B)
{
int m;
if(n) //如果n为真,开始递归调用n!=0
{
MultiBase(n/B,B); //递归时第一个参数变化
m=n%B; //求本层余数
if(m<10) //余数〈10则原样输出
printf("%d",m);
else
printf("%c",m+55); //余数>10输出字符 ABCDEF --》10,11,12,13,14,15
}
}
大家可以仔细去理解一下上面的内容会发现C语言基础函数是如此简单~