一个c++递归的小程序,其输出结果理解不了,请问这个递归的基例是“cout<<endl;”这个吗?
void f(char ch){
if (('A' <= ch) && (ch <= 'H')){
f(ch - 1);
cout << ch;
}
else
cout << endl;
}
int main(){
f('C');
}
输出结果为:
(空一行)
ABC
不懂你的意思,就是简单的递归,什么基例。。。,你把函数全部迭代下就懂了
就是把那个字符输出出来吧
f('c')调用f('B')调用f('A')调用f('A'-1),
依次返回回车换行ABC
这个程序递归了3次。
f('A' - 1)的结果是输出回车,此时没有递归,理解吧。
然后
f('A' )的结果回车A,其中的回车是f('A' - 1)的结果。
然后
if('B')的结果是回车AB,其中回车A是f('A' )的结果
最后
if('C')的结果是回车ABC,其中回车AB是f('B' )的结果
一楼的解释很详细?,
是的,终止条件会执行:cout<<endl;
输出结果是由下面的顺序决定的:
f(ch - 1);
cout << ch;
写一个输出的函数,这个函数调用自己本身就是递归函数的形式
就是将字母A到H之间的字母从A开始一次输出
你要理解递归的执行 就好像子程序一样 调用子程序的时候先执行完子程序 然后子程序再返回到主程序 再继续执行主程序
递归就是不断的调用它自己 直到最后一次调用时可以返回了 再倒着往上一层一层返回 所以你看到的输出结果是倒着的