babyfacekiller 发表于 2002-10-27 16:26

输入AB$CDE回车,结果是什么?

1 #include<stdio.h>
2   rev()
3   {char c;
4   c=getchar();
5   if(c=='$')printf("%c",c);
6   else
7       {rev();
8      printf("%c",c);
9      }
10   }
11 main()
12 {
13rev();
14 }
输入AB$CDE回车,结果是什么?
这个地龟函数小弟实在不明白,希望各位大大赐教!!

天蝎公主 发表于 2002-10-27 21:28

结果应该是$

babyfacekiller 发表于 2002-10-28 00:46

天蝎大大,我也觉得是$。可是老大说是$BA。

musicbug 发表于 2002-11-1 12:32

为什么不运行一下?嘿嘿

babyfacekiller 发表于 2002-11-1 14:02

老大的话,佩服
solche aufgabe ist nichtrealistisch, aber kann in der klausur vorkommen, vermute ich.
hier jeder char c hat eigenen gueltigkeitsbereich.
Ablauf des programms bei Eingabe AB$CDE:
11-12-13-2-3-4-6-7*-2-3-4**-6-7-2-3-4***-5-10-8****-9.......

*hier c = 'A'
**hier zweiter c = 'B'
*** hier dritte c = '$'
**** bei dem prozedurende springt der zeiger zu aufrufender funktion zurueck;hier c= 'B'
analog wird A auch ausgegeben.
Ausgabe aufm BS: $BA
wichtig:
1geltigkeit bei der geschachelten rekusive-funktion.
2wo springt der zeiger hin, wenn der prozedur/die funktion zu ende laeuft.

数字蛋糕 发表于 2002-11-17 01:17

这题够狠!!!

babyfacekiller 发表于 2002-11-17 04:10

看懂这道题,就明白了递归函数调用机制的问题。

数字蛋糕 发表于 2002-11-17 11:34

我看的时候就漏掉了后面的BA。
不过并不是因为不理解递归的机制。
页: [1]
查看完整版本: 输入AB$CDE回车,结果是什么?