此程序可以正常运行并执行所需操作。我的问题是关于ReverseName函数,以及它是如何工作的。我能够从我书中的一些例子中对它进行逆向工程,但我无法弄清楚它是如何工作的。我得到名字被发送给它。我只是不明白它是如何反向打印的。
#include <iostream>
using namespace std;
void ReverseName(char *s );
int main(void){
char Name[] ="John Doe";
cout << "Name is: " << Name << "\n" << "Name Backwards is: " ;
ReverseName(Name);
cout << "\nName is: "<< Name << '\n';
return 0;
}
void ReverseName(char * s){
if(*s){
ReverseName(s+1);
cout << *s;
}
return;
}
答案 0 :(得分:2)
void ReverseName(char * s){
if(*s){
ReverseName(s+1); // come into the end of the string
cout << *s;
}
return;
}
就像这样:
'J'
call --> 'o'
call ---> 'h'
call ---> ...
call ---> 'e' (Recursion to the end)
当堆栈到达递归结束时,它将按顺序执行。然后它就像。
cout << 'e'
cout << ...
cout << 'h'
cout << 'o'
cout << 'J'
(come back from the call stack)
答案 1 :(得分:0)
这是一个递归函数。
它获取一个指向char数组的指针并调用自身,直到到达char数组的末尾,然后它“展开”递归,从后面打印所有的chars。
答案 2 :(得分:0)
ReverseName()是一个递归函数。