#include<stdio.h>void fun(char c){ if(c>'x') fun(c-1); printf("%c",c);}main(){ fun('z');}这个程序跑到c=x之后为什么会打出yz??看不懂是怎么回事??
2 回答
已采纳
慕用4063026
TA贡献195条经验 获得超115个赞
递归函数,估计你想不通的是fun函数这个运行过程,fun带入的第一值z>x执行语句fun(c-1)也就是y(此时不执行输出z的语句)。接着y>x继续执行fun(c-1)(此时不执行输出z的语句),也就是fun(x)不满足c>'x',执行输出语句x,结束fun(x)回到fun(y)执行输出y结束函数,回到fun(z)执行输出z
月薪过万只是梦
TA贡献4条经验 获得超2个赞
字符本身没有什么可比较的,if (c>'x') z赋予给了c,会把z 和 x 按 ASCII码转换为十进制;
于是便是if (106>104) fun(106-1); fun(105)又会逐次运行,看出这是一个递归函数;
条件是到x (即104)便结束。
所以105,106又会按照ASCII码表转换回字符 y,z
- 2 回答
- 0 关注
- 1293 浏览
添加回答
举报
0/150
提交
取消