1 / 9
文档名称:

第六章 C语言函数递归调用.ppt

格式:ppt   大小:2,647KB   页数:9页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第六章 C语言函数递归调用.ppt

上传人:cengwaifai1314 2022/6/23 文件大小:2.58 MB

下载得到文件列表

第六章 C语言函数递归调用.ppt

相关文档

文档介绍

文档介绍:函数的递归调用
在调用一个函数的过程中,出现直接或间接地调用该函数本身,称为函数的递归调用。
f函数
调用f函数
f1函数
调用f2函数
f2函数
调用f1函数
int f (int x)
{
int z; 函数的递归调用
在调用一个函数的过程中,出现直接或间接地调用该函数本身,称为函数的递归调用。
f函数
调用f函数
f1函数
调用f2函数
f2函数
调用f1函数
int f (int x)
{
int z;
if(x==0) return 1;
if(x>0) z=f (x-1);
else if(x<0) z=f (x+1);
return (2*z);
}
#include <>
void recur(int);
int main (void)
{
recur(1);
return 0;
}
void recur(int n) //递归函数
{
printf("第%d级调用\n", n); //1
if (n < 4)
{
recur(n+1); //递归
}
printf("第%d级返回\n", n); //2
}
输出结果:
第1级调用
第2级调用
第3级调用
第4级调用
第4级返回
第3级返回
第2级返回
第1级返回
解析:
从结果可以看出,1和2相当于循环体,当符合测试条件(即n<4)时,#1部分循环;当测试条件为false时,2部分循环。
在递归函数中,位于递归调用之前的语句(即1部分),按被调函数(即recur())的顺序执行;位于递归调用之后的语句(即2部分),按被调函数相反的顺序执行。
每级函数调用都有自己的变量,递归调用就相当于又从头开始执行函数的代码。
每次函数调用都会返回一次,并且按顺序逐级返回递归。
#include<>
int fun(int n) //定义函数
{
if(n==0||n==1)
{
n=1;
}
else
{
n=n*fun(n-1); //递归调用函数
}
return n;
}
int main()
{
int i,j;
printf("请输入一个数字:\n");
scanf("%d",&i);
j=fun(i);
printf("它的阶乘为: %d",j);
}
有3个人坐在一起,问第3个人多少岁?他说比第2个人大2岁。问第2个人多少岁?他说比第1个人大2岁。最后问第1个人,他说是10岁。请问第3个人多大?
分析:
age(3)=age(2)+2;
age(2)=age(1)+2;
age(1)=10;
归纳:
n=1 age(n)=10
n>1 age(n)=age(n-1)+2
程序如下:
#include <>
int ag