反转从控制台读取的文本
Reversing a text read from console
我试图理解递归函数,我试图制作一个反转从控制台读取的文本的函数。例如,如果输入"abcd",则输出将是"dcba"。
这就是我所拥有的(不是我自己想出来的(。
void reverse() {
char c;
c=getchar();
if(c!='n')
reverse();
cout<<c;
}
用于测试目的。
大部分问题来自if(c!='n')
(或者我直到现在都这么认为(。有没有关于这个函数如何工作的直观解释? 也许有没有更好的方法来构建函数(递归(?
递归函数使用调用堆栈来存储函数调用。最后一个调用的函数位于调用堆栈的顶部(后进先出(。
假设您的字符串是"ABCD",则会生成以下递归树:
-
A
: 拨打reverse()
-
B
: 拨打reverse()
-
C
: 拨打reverse()
-
D
: 拨打reverse()
-
n
:此时,执行控制将传递回上一个调用,直到调用堆栈耗尽。
请注意,每次调用reverse()
后都有一个挂起的cout
,一旦执行控制权被传回,它就会执行。 因此,DCBA
字符被打印到标准输出
n
是新行的标记,所以你的 if 语句所做的只是检查行尾,如果是行尾,则打印出整个内容。
相关文章:
- C++将文本文件中的数据读取到结构数组中
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- C++试图读取一个文件并输出到另一个文本文件
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 将从格式化文本文件读取的文本数据存储到链表
- 如何从文本文件中读取数值,直到遇到字符类型?
- 如何将文本文件的特定行读取到 int 类型的数组中C++?
- 为什么 getline() 不读取文本文件中的所有内容?
- 读取字符串文本输入以创建 2D 矢量
- 如何使用iStringstream读取和解析文本文件?
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 我被困在如何从文本文件中读取
- C++ 从文本文件中读取每两行,并且在矢量中是安全的
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 如何读取文本文件中的数据并为每列 c++ 分配数组
- 在 c++ 中从文本文件中读取两个十六进制值
- 如何使用object.get()将文本读取到一个参数比文本大的2D数组中(2D数组有更多的行和列)
- C++从非英语文件名和非英语文本读取