学习目标:
理解并掌握嵌套调用函数的含义和执行过程
理解并掌握递归调用函数的含义和执行过程
重点:
嵌套函数的定义及调用方法
递归函数的定义及调用方法
难点:
巧妙使用递归算法设计函数来解决实际数学问题
一、函数的嵌套调用
1.定义
调用一个函数的时候又调用另一个函数
例1:求三个数当中最大数(max函数)的阶乘(jiecheng函数)
#include<stdio.h>
max(int x,int y,int z);
long jiecheng(int a);
void main()
{
int a,b,c;
printf("请输入三个整数:");
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d中最大的数为%d\n",a,b,c,max(a,b,c));
printf("%d!=%d\n",max(a,b,c),jiecheng(max(a,b,c)));
}
max(int x,int y,int z)
{ int a;
if(x>=y)
{ a=x;}
else
{ a=y;}
if(z>=a)
{ a=z;}
return a;
}
long jiecheng(int a)
{ int i=1;
long f=1;
for(;i<=a;i++) f=f*i;
return f;
}
二、函数的递归调用
1.定义
调用一个函数的时候又直接或间接调用了该函数本身
递归调用是一种特殊的嵌套调用
例2:递归调用同一个函数求某个数的阶乘(jiecheng函数)
#include<stdio.h>
long jiecheng(int a);
void main()
{
int x;
printf("请输入一个整数:");
scanf("%d",&x);
printf("%d!=%f\n",x,jiecheng(x));
}
long jiecheng(int a)
{ if(a==0)
return1;
else
returna*jiecheng(a-1);
}

