变量的存储属性
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <stdio.h> int i=0; void move(char x,char y) { printf("%c- - >%c\n",x,y); i++; } void hanoi(int n,char A,char B,char C) { if(n==1) move(A,C); else main() { { hanoi(n-1,A,C,B); int m; move(A,C); printf("请输入盘子的个数:"); hanoi(n-1,B,A,C); scanf("%d",&m); } printf("搬运这 %3d 个盘子的具体步骤如 }
借助位置
将n个盘从A座借助B座,移到C座
void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C); else{ hanoi(n-1,A,C,B); move(A,C); hanoi(n-1,B,A,C); } }
A
B
C
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
else c=age(n-1)+2;
return(c); } main() { printf(“%d”,age(5)); } 运行结果: 18
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
age(5)=18 age(5)=age(4)+2 age(4)=16
=age(3)+2
age(3)=14
下:\n",m); hanoi(m,'A','B','C'); printf("至少需要搬%d次\n",i); }
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
有5个人坐在一起,问 第五个人几岁?他说比第4 个人大2岁。问第4个人, 他说比第3个人大2岁。问 第3个人,他说比第2个人 大2岁。问第2个人,他说 比第1个人大2岁。最后问 第1个人,他说是10岁。请 问第5个人是多大。
scanf(“%d”,&m); printf(“搬运这 %3d 个盘子的具体步骤如下:\n”,m); hanoi(m,’A’,’B’,’C’); }
10 浙江长征职业技术学院—计算机与信息技术系—相方莉制作
起始位置
借助位置
将n个盘从A座借助B座,移到C座
void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C);
求第5个人的年龄 age(5)=age(4)+2 age(4)=age(3)+2 age(3)=age(2)+2 age(2)=age(1)+2 age(1)=10 age(n)=10 age(n)=age(n-1)+2 (n=1) (n>1)
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
age(int n) {int c; if(n= =1) c=10;
起始位置
借助位置
将n个盘从A座借助B座,移到C座
void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C); else{ hanoi(n-1,A,C,B); move(A,C);
A
B
C
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
起始位置
A
B
C
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
起始位置
借助位置
将n个盘从A座借助B座,移到C座
void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C); else{ hanoi(n-1,A,C,B);
A
B
C
Biblioteka Baidu
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
A
B
C
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
一、函数的递归调用
递归调用:在调用一个函数的过程中又出现直接 或间接的调用该函数本身的过程. 直接调用: int f(int x) {int y,z; z=f(y); return(2+z); } 间接调用: int f1(int x) int f2(int t)
{int y,z;
z=f2(y);}
{int a,c;
c=f1(a);}
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
void move(char x,char y) { printf(“%c- - >%c\n”,x,y); } main() {int m;
printf(“请输入盘子的个数:”);
主讲:相方莉
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
1. 在调用函数时,如果实参是简单变量,它与对应 形参之间的数据传递方式是( 答 案 ) 地址传递 单向值传递 恭喜您!答对了! 由实参传给形参,再由形参传回实参 传递方式由用户指定 对不起!答错了!
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
2.以下函数值的类型是( 答 案 ) fun(float x ) { float y; y=3*x-4; return y; 恭喜您!答对了! } int 不确定 对不起!答错了! void float
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
3. 设有以下函数,则输出结果是 f( int a) { int b=0; int c = 3; b++; c++; return(a+b+c); } main() { int a = 2, i; printf("%d\n",f(a)); }
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
函数的递归调用 函数的嵌套调用
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
汉诺塔是一种古老的数学问 题,是指在“A”柱上从下向上依 次放着从大到小的一叠盘子,要 把该柱上的盘子全部搬到指定的 “C”柱,在搬运过程中,可以利 用“B”柱来协助搬移,但每次只 允许移动一个盘子,且在移动过 程中始终保持大盘在下,小盘在 上。试问怎样搬移盘子?最少需 要搬几次才能把“A”柱上的全部 盘子移至“C”柱?
=age(2)+2
age(2)=12
=age(1)+2
=10
浙江长征职业技术学院—计算机与信息技术系—相方莉制作