c语言求解?

如题所述

依照递归调用时输出的顺序,如图:

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-29
当第一次进入pr()函数并执行到scanf函数处时,读取一个字符‘a’。此时在此pr()函数中字符变量ch的值即为'a'。
if判断读取的字符是否为'#',并不是,因此进入一个内层函数pr()中。在执行这个pr()函数时,对外层而言只是执行一条语句而已。是在执行完这条语句之前,将不会执行后面的内容的。
在这个内层pr()中,执行scanf(),读取一个字符'b',此时这个pr()函数中的局部变量ch的值为'b'。然后执行if()判断,执行另一个pr()
在这个pr()中,一样的,读取'c',判断if(),执行pr()。

最后,读取到'#',if()判断,结束递归,打印'#',出栈,挑转到上一层pr()。

在这个pr()中,就剩下一句printf()函数,所以打印'c',出栈,跳转到上一层。

重复出栈打印到达栈顶,结束程序。

最后打印结果为 #cba本回答被提问者采纳
第2个回答  2019-09-29
输出为#cba。就是函数的递归调用。追问

不懂,有详细过程吗

第3个回答  2020-01-13
相似回答