问题描述
- 一个关于递归的小程序,理解不了其输出结果。。。。。
-
一个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
解决方案
这个程序递归了3次。
f('A' - 1)的结果是输出回车,此时没有递归,理解吧。
然后
f('A' )的结果回车A,其中的回车是f('A' - 1)的结果。
然后
if('B')的结果是回车AB,其中回车A是f('A' )的结果
最后
if('C')的结果是回车ABC,其中回车AB是f('B' )的结果
解决方案二:
f('c')调用f('B')调用f('A')调用f('A'-1),
依次返回回车换行ABC
解决方案三:
不懂你的意思,就是简单的递归,什么基例。。。,你把函数全部迭代下就懂了
解决方案四:
就是把那个字符输出出来吧
解决方案五:
一楼的解释很详细?,
解决方案六:
是的,终止条件会执行:cout<<endl;
输出结果是由下面的顺序决定的:
f(ch - 1);
cout << ch;
解决方案七:
写一个输出的函数,这个函数调用自己本身就是递归函数的形式
解决方案八:
就是将字母A到H之间的字母从A开始一次输出
解决方案九:
你要理解递归的执行 就好像子程序一样 调用子程序的时候先执行完子程序 然后子程序再返回到主程序 再继续执行主程序
递归就是不断的调用它自己 直到最后一次调用时可以返回了 再倒着往上一层一层返回 所以你看到的输出结果是倒着的
时间: 2024-08-08 07:15:23