【发布时间】:2021-05-14 08:29:29
【问题描述】:
我想知道为什么下面的递归 Pascal 过程实际上会终止:
procedure reverseWordRecursive;
var
word : char;
begin
read(word);
if word = '.' then
writeln
else
begin
reverseWordRecursive;
write(word)
end;
end; {reverseWordRecursive}
该过程的行为与代码可能暗示的不同。当您运行代码时,read(word) 的调用仅在过程开始时运行一次。每次递归调用开始时不会要求用户输入单个char,而是输入char 的整个string。
为什么它没有在“read(word)”调用中陷入无限循环?它不应该要求用户永远输入一个单词吗?
过程如何知道每个递归调用实际使用相应的下一个字符?
【问题讨论】:
-
它会一直递归直到输入是
.。 -
对不起,我没有澄清程序的奇怪行为。我现在编辑它。汤姆回答了。还是谢谢你。
标签: recursion infinite-loop pascal