1 / 30
文档名称:

C语言:函数3.ppt

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

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

分享

预览

C语言:函数3.ppt

上传人:mh900965 2018/1/22 文件大小:270 KB

下载得到文件列表

C语言:函数3.ppt

相关文档

文档介绍

文档介绍:写程序运行结果
#include<>
int sum(int x,int y)
{ int k;
k=x+y;
return k;
}
void main()
{ int i,s=0;
for(i=0;i<3;i++)
{ s=s+sum(2,3);
printf("%d\t",s);
}
函数的递归调用
函数的递归调用
——函数直接或间接地调用自身称为递归调用。
例:计算n!
当 n>0 时:
n!=n*(n-1)!
(n-1)!=(n-1)*(n-2)!
……
n=0时 n!=1
1 (n=0, 1)
n!=
n•(n-1)! (n>1)
int fac( int n )
{ int f;
if( n<=1 ) f=1;
else f=n*fac(n-1);
return (f );
}
以计算3!为例,调用 fac(3);
y =fac(3);
n为3
f=3*fac(2);
n为2
f=2*fac(1 );
n为1
f=1;
返回1
返回2(2*1)
返回6(3*2)
int fac( int n )
{ int f;
if( n<=1 ) f=1;
else f=n*fac(n-1);
return (f );
}
递推
回归
程序代码
float fac(int n)
{ float f;
if(n==0 || n==1)
return 1;
return fac(n-1)*n;
}
main()
{ int n;
float y;
scanf("%d",&n);
y=fac(n);
printf("%d!=%ld\n",n,y);
}
汉诺塔问题
假设三个塔,第一个塔上有从小到大堆积的一叠金属片,一次从一个塔搬运一片到另一个塔,只能从塔顶搬运,不允许大的金属片压在小的金属片上,求解将金属片全部搬运到第三个塔上的过程。
递归解决
步骤: 先将A上n-1片搬运到中间B塔上; 将A最后一片搬运到目标C塔上; 将B上n-1片借助A搬运到目标C塔上;
递归终结条件: 当n=1时,直接搬运;
例如:A上有3个
1. A 2个 B
2. A 1个 C
3. B 2个 C
A C
1分解 A B
C B
B A
3分解 B C
A C
程序代码:
Void move(char x, char y)
{
printf(“%c---->%c\n”,x,y);
}
void hanoi( int n, char one, char two, char three )
{ if( n==1 )
move(one,three);
else
{ hanoi( n-1,one,three,two );
move(one,three);
hanoi( n-1,two,one,three );
}
}
main()
{ int n;
scanf( "%d",&n );
hanoi( n, ’A’, ‘B’, ‘C’);
}
例:读程序,写出程序运行结果。
main( )
{ int k=1;
int x=10;
int y=20;
printf("\nmain\n");
printf(“k=%d x=%d y=%d\n",k,x,y);
other( );
printf(“main\n”);
printf(“k=%d x=%d y=%d\n",k,x,y);
}
other( )
{ int k=100;
int x=200;
int y=300;
printf(“other\n”);
printf(“k=%d x=%d y=%d\n",k,x,y);
}
main
k=1 x=10 y=20
other
k=100 x=200 y=300
main
k=1 x=10 y=20
//函数main和函数 other中定义的变量k、x、y,
它们的名字虽然相同,但它们是相互独立的,
系统为其分配各自的存储空间,它们互不相干。
变量的作用域
局部变量
全局变量
从变量的使用范围(空间角度)来划分:
变量是程序中最活跃的元素,因为它代表的是各种类型的数据。
数据
运算符
语句
函数
程序
文件
局部变量
在一个函数内部定义的变量,是内部变量,它只在本函数范围内有效,即只在本函数内才能使用。称为局部变量。
(1) 主函数中定义的变量也是如此。
(2)不同函数中可以使用相同名字的变量,互不干扰。
(3)函数的形参也是一种局部变量。
(4)在函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效。