猿问

请问有个C的主函数运行顺序的一个问题

#include<stdio.h>

void fun(char c)

{

if(c>'x')

fun(c-1);

printf("%c",c);

}

main()

{

fun('z');

}

这个程序跑到c=x之后为什么会打出yz??看不懂是怎么回事??

慕后端8527005
浏览 1294回答 2
2回答

慕用4063026

递归函数,估计你想不通的是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

月薪过万只是梦

字符本身没有什么可比较的,if (c>'x')  z赋予给了c,会把z 和 x 按 ASCII码转换为十进制;于是便是if (106>104)  fun(106-1); fun(105)又会逐次运行,看出这是一个递归函数;条件是到x (即104)便结束。所以105,106又会按照ASCII码表转换回字符 y,z
随时随地看视频慕课网APP
我要回答